[英]“Using generic type 'Func<TResult>' requires 1 type arguments” issue when defining a delegate function type with more than 4 arguments
[英]Create a generic type of more than two arguments via reflection?
基本上,我有:
public class Gen<T, U> { }
我想通过该类的反射创建一个通用类型。 我尝试了以下操作,都产生了null:
var asm = typeof(Program).Assembly;
var gen1 = asm.GetType("Gen`2"); // null
var gen2 = asm.GetType("Gen<>"); // null
var gen3 = asm.GetType("Gen"); // null
这没有编译:
var t = typeof(Gen<>).MakeGenericType(typeof(int), typeof(string));
我怎样才能实现自己想要的? 为什么最后一条语句没有编译? 那“ Gen`2”怎么办不就可以了吗?
正确的语法是这样的:
var t = typeof(Gen<,>).MakeGenericType(typeof(int), typeof(string));
(请注意<
和>
之间的逗号)
要通过反射获取Gen<T, U>
类,必须指定类型的全名 ,包括名称空间:
var gen = asm.GetType("TheNamespace.Gen`2");
如果Gen<T, U>
类是嵌套的,则必须使用+
将其名称与其封闭的类型名称分开:
var gen = asm.GetType("TheNamespace.EnclosingType+Gen`2");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.