Как прикрепить события оригинального объекта к глубоко скопированному клону - PullRequest
5 голосов
/ 28 октября 2010

Следуя моему вчерашнему вопросу, я могу довольно просто скопировать объект с событиями в C # и прикрепить события исходного объекта к клонированной копии, просто установите объявление Event в Copy = значение в оригинале. Глубокое клонирование при прикреплении событий

Как вы это делаете в VB.Net?(Используя .Net 2)

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

1 Ответ

4 голосов
/ 29 октября 2010

Да, вы можете, и это не так сложно, но, похоже, по этому вопросу не так много информации, такой большой вопрос.


Dim sourceObject As New FooBar
Dim destObject As New FooBar

AddHandler sourceObject.SomeEvent, AddressOf myFunc


Dim miHandler As FieldInfo = GetType(FooBar).GetField("SomeEvent", BindingFlags.Static Or BindingFlags.NonPublic Or BindingFlags.Instance)
Dim sourceDelegate As [Delegate] = miHandler.GetValue(sourceObject)

Dim addDelegate As [Delegate] = sourceDelegate.GetInvocationList().First() ' if its multicast, then you'll need to copy the lot

AddHandler destObject.SomeEvent, addDelegate

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