我想做这样的事情:
public List<T> GetList<T>()
{
if (typeof(T) == typeof(Type1))
{
return new List<Type1>() { new Type1(), new Type1(), new Type1() };
}
if (typeof(T) == typeof(Type2))
{
return new List<Type2>() {new Type2(), new Type2()};
}
throw new Exception("Unknown T");
}
public void DoStuffWithGenericList<T>()
{
var list = GetList<T>();
// do stuff that does not depend on T
}
但这当然是不合法的。我觉得我在这里缺少一些基本的东西:)
就我而言,我从 Entity Framework 获取不同类型对象的列表,但我的其余逻辑并不依赖于实际类型。它可以只在 List 上工作,也可以是通用的。
GetList() 将作为类型参数调用的所有 T 都将继承自同一个基类,如果它有所不同的话。