这是我的方法:GetListItemsPainted<T>(List<T> list)
我不知道该列表的类型是什么,
如何创建具有传递列表类型的新列表?
类似的东西:
List<list.GetType()> newList = new List<list.GetType()>();
如何将我的列表转换为真实类型,以便我拥有所有属性等等?
感谢
答案 0 :(得分:10)
您可以使用T
创建一个列表:
List<T> newList = new List<T>();
如果您必须获取该类型,则可以使用typeof
。这与您要求的类似,但有其他用途,您不需要它来使泛型工作:
Type myType = typeof(T);
答案 1 :(得分:1)
您不必创建新的List,您已经拥有了一个。
如果您需要特定类型,请使用where
constraint
如果您打算对各种任意类型做出反应,这在我看来是一个糟糕的设计决定,那么您将需要使用.Cast<T>()
的条件
类似的东西:
Type myListType = list.GetType().GetGenericArguments()[0];
// or Type myListType = typeof(T); as stated by Kobi
if(myListType == typeof(SomeArbitraryType))
{
var typedList = list.Cast<SomeArbitraryType>();
// do something interesting with your new typed list.
}
但是,我会考虑使用约束。