gpt4 book ai didi

c# - 参数异常 : method arguments are incompatible

转载 作者:太空宇宙 更新时间:2023-11-03 12:53:54 27 4
gpt4 key购买 nike

我正在尝试为特效制作一个事件系统

我在一个静态类中有这个函数,允许我将任何基本事件处理程序链接到任何基本事件,无论每个对象的类如何,只要它们具有所需的函数

这是函数

(在具有多个非常有用的通用函数的公共(public)静态类中

    public static bool eventLinker<T,Y>(T listener, Y speaker, string eventName, string eventHandler)
{
EventInfo eInfo = typeof(Y).GetEvent(eventName);
MethodInfo evHandler = typeof(T).GetMethod(eventHandler, new Type[2] {typeof(object), typeof(EventArgs)});
Type handlerType = eInfo.EventHandlerType;

if(eInfo != null && evHandler != null && handlerType != null)
{

Delegate d = Delegate.CreateDelegate(handlerType, speaker, evHandler);
eInfo.AddEventHandler(listener,d);

return true;
}
return false;
}

这应该适用于任何有公共(public)事件 EventHandler SomethingHappened;

public void nameOfTheFunctionThatTriggerTheEvent()
{
EventHandler handler = SomethingHappened;
if(handler != null)
{
handler(this, EventArgs.Empty);
}

}

与任何拥有的类(class)

public void HandleEvent(object sender, EventArgs e)
{
Debug.Log("Something happened to " + sender);
}

我总是在 Delegate.CreateDelegate 遇到这个错误

ArgumentException: method arguments are incompatible System.Delegate.CreateDelegate (System.Type type, System.Object firstArgument, System.Reflection.MethodInfo method, Boolean throwOnBindFailure) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System/Delegate.cs:263) System.Delegate.CreateDelegate (System.Type type, System.Object firstArgument, System.Reflection.MethodInfo method) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System/Delegate.cs:276) FunctionExt.eventLinker[Effect,Test] (.Effect listener, .Test speaker, System.String eventName, System.String eventHandler) (at Assets/_C#/FunctionExt.cs:41) GameUpdate.Awake () (at Assets/_C#/GameUpdate.cs:84)

我在任何地方都找不到解决方案。

最佳答案

如果您使用的是 Unity (IF),我遇到了同样的问题,我所要做的就是为造成这个问题的任何元素创建另一个对象,然后只需从导致问题的对象的检查器中复制组件并将其粘贴到您创建的新对象中,然后它起作用了,我不知道为什么但它确实起作用了,只需确保从检查器中复制并粘贴每个组件并将其粘贴到一个新组件中即可。

关于c# - 参数异常 : method arguments are incompatible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34619884/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com