从类型名称动态创建委托

时间:2011-10-20 11:07:38

标签: c# generics

我想创建一个通用委托,但我只知道执行时的类型。

这是我要创建的代理:

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对我来说是未知的。 不幸的是,我想要调用的方法不是静态的。

有没有人有任何想法?

提前致谢

1 个答案:

答案 0 :(得分:4)

您需要使用MakeGenericType创建特定的委托类型:

Type template = typeof(MyDel<>);
Type specific = template.MakeGenericType(typeSet);
Delegate test = Delegate.CreateDelegate(specific, method);

认为这就是你所追求的......