我有四个具有类似结构的EF
类和一个包含EF
结构和其他一些道具和方法的泛型类,并且想要将泛型方法编写为通用的{{1 }}
EF
我的问题:如何创建 T型的新实例或获取 T 的类型
答案 0 :(得分:2)
您需要在T:
上添加约束private List<T> CastGenericToEF<T>(List<GenericClass> GenericList) where T : new()
然后,您可以使用new T()
要获取T的类型,只需使用typeof(T)
答案 1 :(得分:1)
你必须定义T可以有new()
private List<T> CastGenericToEF<T>(List<GenericClass> GenericList) where T: new()
{
List<T> Target = new List<T>();
foreach (var generic in GenericList)
{
//How can I do to create an Instance of T?
var tInstance = new T();
// Some proccess here
var typeOf = typeof(T);
}
return Target;
}
要访问T的属性/方法,您必须以某种方式指定它的类型。没有规范,T可以是任何东西......
以下示例在某处定义了一个接口,然后指定T必须实际实现该接口。如果你这样做
interface IGenericClass
{
void SomeMethod();
}
您可以访问界面
定义的属性或方法 private List<T> CastGenericToEF<T>(List<GenericClass> GenericList) where T : IGenericClass, new()
{
List<T> Target = new List<T>();
foreach (var generic in GenericList)
{
//How can I do to create an Instance of T?
var tInstance = new T();
tInstance.SomeMethod();
// Some proccess here
var typeOf = typeof(T);
}
return Target;
}