ArgementException: Метод аргументы несовместимыC#

Место общения программистов C#
Ответить
Anonymous
 ArgementException: Метод аргументы несовместимы

Сообщение Anonymous »

Я пытаюсь создать систему событий для спецэффектов < /p>
У меня есть эта функция в статическом классе, чтобы позволить мне связать любой базовый обработчик событий с каким -либо основным событием, независимо от классов каждого объектов, если они имеют необходимые функции < /p>
. public static bool eventLinker(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;
}
< /code>
Это должно работать с любыми классами, у которых
public event eventhandler somethinghapped; < /p>
public void nameOfTheFunctionThatTriggerTheEvent()
{
EventHandler handler = SomethingHappened;
if(handler != null)
{
handler(this, EventArgs.Empty);
}

}
< /code>
с любым классом, у которого < /p>
public void HandleEvent(object sender, EventArgs e)
{
Debug.Log("Something happened to " + sender);
}
< /code>
Я всегда получаю эту ошибку по адресу delegate.createdelegate < /p>

ArgementException: Аргументы метода несовместимы
system.delegate.createdelegate (System.Type, System.Object
FirstArgument, System.Mehote. /> throknbindfailure) (at
/users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/system/delegate.cs:263)
system.delegate.createlegate (System.type, System.ObjecteM.BreateRegate (System.Type.Objectem.createRegate (System.Type.ObjecteM.DeLegate.createlegate (System.Type.Objectem.Delegate.createlegate. System.Reflection.methodinfo Метод) (at
/users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/system/delegate.cs:276)
functionext.eventlinkerReceftecteSteSter, the .T.T.T.TerseTer,. /> system.string EventName, System.String EventHandler) (at
Assasts/_c#/gameupdate.cs:84)br/>
Я не могу найти решение.>

Подробнее здесь: https://stackoverflow.com/questions/346 ... compatible
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»