【问题标题】:instantiating a generic referance class with data types known at runtime使用运行时已知的数据类型实例化泛型引用类
【发布时间】:2015-06-10 04:26:14
【问题描述】:

我在 C# 中有一个泛型类,它有 2 种数据类型 public class ResolvedChainSubscriber < K, V>,现在我必须创建这个类的一个实例,但是其中一个参数的数据类型只有在运行时才能知道。我将其存储为Type Prototype

public static Object SubsciberTopic(Type ProtoType)
{
    Type[] type={Type.GetType("System.String"),ProtoType};
    Type resolve = typeof(ResolvedChainSubscriber <,>).MakeGenericType(type); 
    Object obj1=Activator.CreateInstance(resolve);              
}

但是,我得到了例外

MissingMethodException:没有为此对象定义无参数构造函数

请注意,ResolvedChainSubscriber 类是一个引用类。因此我无法对其进行编辑以添加函数或构造函数

【问题讨论】:

  • 你问的是动态数据类型吗?
  • 嗯,我是说第二个数据类型的类型,也就是“V”,只有在运行时才能知道......并且它存储在 ProtoType 中
  • 这里的问题似乎与类型解析无关,这应该在泛型的编译时发生,否则你需要反射来解析类型,检查我在下面发布的链接,如果他们帮助

标签: c# class generics reflection


【解决方案1】:

ResolvedChainSubscriber 有公共构造函数吗?尝试使用 Activator.CreateInstance overload 为现有的公共构造函数获取参数。

【讨论】:

  • 做,我仍然需要一个构造函数,我想将另一个 Object 类对象的值分配给 obj1。例如,如果我在订阅者主题的参数中有(对象对象)......并且我想对该对象进行类型转换并将其存储在 obj1
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-03
  • 2011-04-02
  • 1970-01-01
  • 2013-09-18
相关资源
最近更新 更多