我有以下课程:
public class CustomItem
{
//....
}
,并且有多个类在其构造函数方法中接受CustomClass
。例如:
public class FirstClass
{
public FirstClass(CustomItem customItem) { }
}
我正在尝试创建一个接受动态类并将其初始化的通用方法。像这样:
public List<T> MyTestMethod<T>(CustomItem myCustomItem) where T : class, new()
{
List<T> list = new List<T>();
foreach(CustomItem myCustomItem in listOfCustomItems)
{
T instance = new T(myCustomItem);
list.Add(T);
}
return list;
}
因此,它可以像这样使用:
List<FirstClass> List1 = MyTestMethod<FirstClass>(customItem);
List<SecondClass> List2 = MyTestMethod<SecondClass>(customItem);
在T
中实例化MyTestMethod
的语法不正确。
是我想做的事吗?
答案 0 :(得分:4)
您可以尝试Activator
类来创建带有参数的实例:
Activator.CreateInstance(typeof(T), args: myCustomItem);
根据您的情况:
public List<T> MyTestMethod<T>(CustomItem myCustomItem) where T : class
{
List<T> list = new List<T>();
foreach(CustomItem myCustomItem in listOfCustomItems)
{
T instance = (T)Activator.CreateInstance(typeof(T), args: myCustomItem);
list.Add(instance);
}
return list;
}
答案 1 :(得分:2)
您可以使用
T instance = (T)Activator.CreateInstance(typeof(T), myCustomItem);
抱歉,在https://stackoverflow.com/a/55829165/5281555之前10秒给出了正确答案:)