如何在 C# 中使用通用 Class 对象 return 通用列表?
How to return Generic List with Generic Class Object in c#?
我想 return Table 列出 class 对象并且这个调用也是通用的,我不想在任何对象上使用像 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;
}
在上面的方法中,Table1,Table2,以及任何类型的table class对象...classes没有任何基于 class,这些 class 使用自定义格式设置 table 属性。
我要return它。
如果有人有任何想法,请帮助我。
谢谢。
如果不明确指定类型参数,则不能将泛型类型与列表一起使用。或者,您可以创建一个基础 class 或接口作为列表的参数。
我的意思是:
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
/[= 之间没有任何接口或公共基础 class 13=]/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
{
}
我想 return Table 列出 class 对象并且这个调用也是通用的,我不想在任何对象上使用像 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;
}
在上面的方法中,Table1,Table2,以及任何类型的table class对象...classes没有任何基于 class,这些 class 使用自定义格式设置 table 属性。
我要return它。
如果有人有任何想法,请帮助我。
谢谢。
如果不明确指定类型参数,则不能将泛型类型与列表一起使用。或者,您可以创建一个基础 class 或接口作为列表的参数。
我的意思是:
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
/[= 之间没有任何接口或公共基础 class 13=]/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
{
}