这是我的方法:GetListItemsPainted<T>(List<T> list)
,我不知道是什么类型的该列表,我可以得到一个对象的泛型类型吗?
我怎样才能创建一个能够有通过列表类型的新名单?
是这样的:
List<list.GetType()> newList = new List<list.GetType()>();
如何我投我的列表,以真正的类型,所以我将有他的所有属性等?
感谢
这是我的方法:GetListItemsPainted<T>(List<T> list)
,我不知道是什么类型的该列表,我可以得到一个对象的泛型类型吗?
我怎样才能创建一个能够有通过列表类型的新名单?
是这样的:
List<list.GetType()> newList = new List<list.GetType()>();
如何我投我的列表,以真正的类型,所以我将有他的所有属性等?
感谢
您不必创建一个新的列表,你已经有一个。
如果你需要一个特定的类型,然后用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.
}
但同样,我会考虑使用一个约束。
您可以使用T
列表:
List<T> newList = new List<T>();
如果你必须得到的类型,你可以使用typeof
。这类似于你问什么,但有其他用途,你不需要它,使仿制药的工作:
Type myType = typeof(T);
谢谢,这是非常halpfull – dubi 2010-05-16 12:49:26
@dubi - 如果它提供了所需的指导,你应该点击复选标记。 – 2010-05-17 06:27:29