我想创建一个通用委托,但我只知道执行时的类型。
这是我要创建的代理:
public delegate void MyDel<T>(T t,string msg);
这是我想要实例化和使用委托
的方法Type typeSet = set.GetType();
MethodInfo method = typeSet.GetMethod("Add");
Delegate test = Delegate.CreateDelegate(typeof(MyDel<typeSet>, method);
在编译时,typeSet对我来说是未知的。 不幸的是,我想要调用的方法不是静态的。
有没有人有任何想法?
提前致谢
答案 0 :(得分:4)
您需要使用MakeGenericType
创建特定的委托类型:
Type template = typeof(MyDel<>);
Type specific = template.MakeGenericType(typeSet);
Delegate test = Delegate.CreateDelegate(specific, method);
我认为这就是你所追求的......