используя System.Reflection - PullRequest
       1

используя System.Reflection

2 голосов
/ 26 ноября 2010

Давайте рассмотрим, что у меня есть приложение с именем AAA.Теперь я загружаю сборку с именем BBB. В сборке BBB есть объявление события и делегат.Обработчик события в BBB доступен в AAA.при загрузке сборки BBB мне нужно добавить обработчик для события в AAA.Всякий раз, когда событие происходит в BBB, метод обработчика в AAA shoud выполняется автоматически.Как это сделать ..........?

я закодировал как dis в AAA

Assembly tstComponent = Assembly.LoadFile(BBB);
            Type Global = tstComponent.GetType(ClassInBBB, false, true);
if (Global != null)
            {

                EventInfo l_objevent = Global.GetEvent("OnGetdelInBBB");
                Type l_objEveType = l_objevent.EventHandlerType;
                Type Dis = Assembly.GetExecutingAssembly().GetType("AAA", false, true);
                MethodInfo l_method = Dis.GetMethod("HandlerinAAA");
                Delegate d = Delegate.CreateDelegate(l_objEveType, l_method);//Getting argument bind exception in this line
                MethodInfo addHandler = l_objevent.GetAddMethod();
                Object[] addHandlerArgs = { d };
                addHandler.Invoke(Dis, addHandlerArgs);

             }   

, пожалуйста, помогите мне.Заранее спасибо

1 Ответ

1 голос
/ 26 ноября 2010

См. Как: подключить делегата с помощью отражения

В вашем примере кода ваше состояние исключение - это может произойти по числу причин , но моя интуиция говорит, что это потому, что сигнатуры методов не верны. Вы также можете попробовать другую перегрузку , которая принимает объект в качестве второго параметра.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...