Я пытаюсь создать систему событий для спецэффектов < /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
ArgementException: Метод аргументы несовместимы ⇐ C#
Место общения программистов C#
-
Anonymous
1758049120
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/>
Я не могу найти решение.>
Подробнее здесь: [url]https://stackoverflow.com/questions/34619884/argumentexception-method-arguments-are-incompatible[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия