我想返回带有类对象的表列表,并且此调用也很通用,我不想在任何其他类型上使用任何非强类型列表,例如ArrayList。
public List<T> GetTables()
{
var tbls = new List<T>();
tbls.Add(new Table<Table1>() { Name = "Table1"});
tbls.Add(new Table<Table2>() { Name = "Table2"});
tbls.Add(new Table<Table3>() { Name = "Table3"});
return tbls;
}
在上述Method,Table1,Table2和任何类型的表类对象中...没有任何类,这些类用于自定义格式的表属性的设置。
我想退货。
[如果有任何想法请帮助我。
谢谢。
您必须在未显式指定类型参数的情况下将通用类型与列表一起使用。另外,您可以创建一个基类或接口,将其作为List的参数。
我的意思是:
public static List<ITable> GetTables()
{
var tbls = new List<ITable>();
tbls.Add(new Table<Table1> { Name = "Table1"});
tbls.Add(new Table<Table2> { Name = "Table2"});
tbls.Add(new Table<Table3> { Name = "Table3"});
return tbls;
}
public class Table<T> : ITable
{
public T TableInstance { get; set; }
public Type TableType => typeof(T);
public string Name { get; set; }
}
public interface ITable
{
Type TableType { get; }
public string Name { get; set; }
}
如果列表组件的唯一共同之处是它们是Table<>
通用对象,如果Table1
/Table2
/ Table2
之间没有任何接口或通用基类,则可以简单地对待它们为object
:
public List<Table<IGenerateData>> GetTables()
{
var tbls = new List<Table<IGenerateData>>();
tbls.Add(new Table<Table1>() { Name = "Table1"});
tbls.Add(new Table<Table2>() { Name = "Table2"});
tbls.Add(new Table<Table3>() { Name = "Table3"});
return tbls;
}
public interface IGenerateData
{
void GenerateData();
}
public class Table1 : IGenerateData
{
}