当前位置: 首页 > 编程笔记 >

C#通过反射创建自定义泛型

汝才良
2023-03-14
本文向大家介绍C#通过反射创建自定义泛型,包括了C#通过反射创建自定义泛型的使用技巧和注意事项,需要的朋友参考一下

本文以实例形式讲述了C#通过反射创建自定义泛型的实现方法,分享给大家供大家参考。具体如下:

比如有这样一个泛型:Demo.GenericsSimple<T,TT> 我想要通过反射创建一个Demo.GenericsSimple<string,int>的实例可以通过下面的格式进行创建:

System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("命名空间.User`形参数量N[[1形参类型全名,形参类型所在的程 序集名称],[2形参类型全名,形参类型所在的程序集名称],[3形参类型全名,形参类型所在的程序集名称]......N]")

实例代码如下:

namespace Demo
{
  public class GenericsSimple<T,TT> where T:class where TT:struct
  {}
  class Program
  {
    static void Main(string[] args)
    {
      var o = System.Reflection.Assembly.GetExecutingAssembly().CreateInstance("Demo.GenericsSimple`2[[System.String, mscorlib],[System.Int32, mscorlib]]");
      Console.WriteLine("{0}",o==null?"null":o.GetType().FullName);
      Console.WriteLine("===end===");
      Console.Read();    
   }
  }
}

希望本文实例对大家的C#程序设计有所帮助。

 类似资料:
  • 我希望在Jackson中为Enum类的集合创建一个自定义反序列化器。因为自定义反序列化器的行为对于所有枚举都是相同的。我想为我的所有枚举类创建公共反序列化程序。 我尝试使一般自定义反序列化如下: 问题是我想在反序列化器中调用枚举静态方法,但无法这样做,因为我没有任何可用的类/枚举上下文信息。 你能帮我知道如何实现它吗?

  • 我创建了一个小的测试项目来测试我的实现,下面是我的异常类头文件。 异常类的源文件为 在我的主应用程序中,我调用了一个函数,该函数抛出我的异常,并在try/catch中捕获它,如下所示: 现在要跑了。哦,天哪,我需要抛出一个异常 捕获的异常:这是我的异常错误。:( 相反,我得到的是 从我在各种帖子上看到的情况来看,我所做的是正确的,所以我错过了什么。

  • 想象一下以下场景: 我想为Foo编写一个自定义的Jackson反序列化程序。为了做到这一点(例如,为了反序列化具有Foo的类 如何编写这样的反序列化程序?这应该是可能的,因为Jackson是通过键入集合和地图来实现的。 澄清: 似乎有两个部分可以解决这个问题: 1)获取内声明的属性类型并使用它来反序列化

  • 本文向大家介绍请你谈谈如何通过反射创建对象?相关面试题,主要包含被问及请你谈谈如何通过反射创建对象?时的应答技巧和注意事项,需要的朋友参考一下 考察点:类 - 方法1:通过类对象调用newInstance()方法,例如:String.class.newInstance() - 方法2:通过类对象的getConstructor()或getDeclaredConstructor()方法获得构造器(Co

  • 本文向大家介绍C#泛型和反射实例解析,包括了C#泛型和反射实例解析的使用技巧和注意事项,需要的朋友参考一下 C#中的泛型和反射经常是一起工作的,因此这里就一次性的加以介绍了。 由于c#是强类型语言,一般来说函数的返回类型和参数的类型都是一早写好的,这也就造成了很多时候不像js那样方便使用,不够灵话。 因此就有了这个泛型,它可以让你的函数和参数在调用的时候才决定类型。如下例所示: 加了where 我