我有以下类(class):
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);
在 MyTestMethod
中实例化 T
的语法不正确。
我正在尝试做的事情可能吗?
最佳答案
您可以尝试使用 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;
}
关于c# - 如何初始化具有构造函数的动态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55828979/