Pau*_*rry 5 .net vb.net events
继续我昨天的问题,深入研究一个带有C#事件的对象,并将原始对象的事件附加到Cloned副本非常简单,只需在Copy =原始值中设置Event声明即可.附加事件时进行深度克隆
你是如何在VB.Net中做到这一点的?(使用.Net 2)
我希望也许有反射的东西你可以检查哪些事件被绑定并以某种方式将它们转移到新对象.
是的,你可以,而且并不难,但似乎没有很多关于这方面的信息,这么好的问题。
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
| 归档时间: |
|
| 查看次数: |
2694 次 |
| 最近记录: |