C# 将模板化方法作为对象传递给反射创建的方法。调用

C# 将模板化方法作为对象传递给反射创建的方法。调用,c#,templates,dynamic,reflection,delegates,C#,Templates,Dynamic,Reflection,Delegates,我有一个函数声明如下: public delegate void Callback<T>(T arg1) where T : EventT; public void RegisterCallback<T>(Callback<T> callback) where T : EventT 如果我理解正确的话,它现在正在创建一个方法来除去这个动态类型,但是我关心的是如何将回调参数传递到方法调用中 typedMethod.Invoke (eventDispatcher

我有一个函数声明如下:

public delegate void Callback<T>(T arg1) where T : EventT;
public void RegisterCallback<T>(Callback<T> callback) where T : EventT
如果我理解正确的话,它现在正在创建一个方法来除去这个动态类型,但是我关心的是如何将回调参数传递到方法调用中

typedMethod.Invoke (eventDispatcher, new object[] { ??? });
我不确定如何声明一个委托以传递到对象[]参数,该对象[]参数也将被类型化为非类类型,我对Csharp也相当陌生,所以我有点迷茫


提前感谢

只需传递您的代表实例即可

static void myglobalcallback(object arg)
{
    //....
}

var dmethod = new DynamicMethod(string.Empty, typeof(void), new Type[] { thegenerictype }, true);
var body = dmethod.GetILGenerator();
body.Emit(opcodes.ldarg_0);
body.Emit(opcodes.castclass, typeof(object));
body.emit(opcodes.call, typeof(mycurrenttype).getmethod("myglobalcallback"));
body.emit(opcodes.ret);
var delegate = dmethod.createdelegate(tyepof(Callbacl<>).MakegenericType(thegenericType));
new object[] { mydelegate }

他在问如何基于该类型创建委托。delegate.CreateDelegatetypeofCallback.makegenerictype…,MyMethodInfo假设他有一个具有适当签名的方法。如果他想调用一个没有定义泛型类型的委托,他可以创建一个具有良好签名的动态方法来调用他的方法,并通过dynamicmethod.createdelegate创建一个委托,然后简单地传递它。他应该如何创建一个编译时未知的签名的动态方法呢?听起来在功能上与中描述的问题相同。
static void myglobalcallback(object arg)
{
    //....
}

var dmethod = new DynamicMethod(string.Empty, typeof(void), new Type[] { thegenerictype }, true);
var body = dmethod.GetILGenerator();
body.Emit(opcodes.ldarg_0);
body.Emit(opcodes.castclass, typeof(object));
body.emit(opcodes.call, typeof(mycurrenttype).getmethod("myglobalcallback"));
body.emit(opcodes.ret);
var delegate = dmethod.createdelegate(tyepof(Callbacl<>).MakegenericType(thegenericType));
new object[] { mydelegate }