c# - 如何初始化具有构造函数的动态类

标签 c# .net reflection

我有以下类(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/

相关文章:

c# - 如何使特定行的 WPF 数据网格单元格只读?

c# - 在 C# 中定义 F# '**' 运算符

c# - 无法审核插入 Entity Framework 。我陷入困境,你能帮忙吗?

java - 获取当前执行方法的名称

java - 使用反射,我可以确定 Java static final 字段是否将被内联吗?

java - 使用其他类的字段动态创建类

c# - “完成”按钮未触发 Xamarin Entry 上的“完成”事件

c# - 部署和发布依赖于 SQL Server 的 WPF 应用程序

c# - 为什么我不能在类上实现接口(interface),用具体类型替换接口(interface)?

c# - 通过 REST API 将测试结果发布到 TFS 2018 测试用例