C# 从Mono 2.8.2中的methodInfo创建委托

C# 从Mono 2.8.2中的methodInfo创建委托,c#,reflection,delegates,mono,C#,Reflection,Delegates,Mono,大家好,我正在尝试在Mono 2.8.2中创建messenger—Unity3d使用的子集。我认为当messenger的方法被修饰为“subscribe”属性时,创建一个助手来自动订阅这些方法会很好 我一直在为这个问题挠头,并且已经阅读了许多其他相关的堆栈问题,但没有找到问题的解决方案 虽然,它最初是 [Subscribe] void OnTestMessage(TestMessage message){ // Hello World } 这是一个非静态方法,您没有提供目标对象。因此,De

大家好,我正在尝试在Mono 2.8.2中创建messenger—Unity3d使用的子集。我认为当messenger的方法被修饰为“subscribe”属性时,创建一个助手来自动订阅这些方法会很好

我一直在为这个问题挠头,并且已经阅读了许多其他相关的堆栈问题,但没有找到问题的解决方案

虽然,它最初是

[Subscribe]
void OnTestMessage(TestMessage message){
  // Hello World
}

这是一个非静态方法,您没有提供目标对象。因此,
Delegate.CreateDelegate
将创建一个带有显式
参数的“开放委托”


由于此参数是必需的,因此它不再与签名匹配。

您尝试订阅的方法的签名是什么?它是否有类似于
void MyMethod(object arg)
的签名?正确。我已经更新了帖子。mono 2.8非常旧,请升级到3.2。3@knocte:不是选项。Unity使用的是mono Unity的版本(技术上是这个fork:),就是这样。我对一个问题感到很紧张,错过了显而易见的东西。我需要学会停止喝咖啡,去和我的猫玩。这已经有很长时间了,但这个答案真的很有帮助<代码>(操作)委托。CreateDelegate(操作类型),**此**,方法信息)将使它正确。
[Subscribe]
void OnMessage(object message){
  // Hello World
}
[Subscribe]
void OnTestMessage(TestMessage message){
  // Hello World
}