.net – 如何将原始对象的事件附加到深度复制克隆
发布时间:2020-12-17 00:01:51 所属栏目:大数据 来源:网络整理
导读:继续我昨天的问题,深入研究一个带有C#事件的对象,并将原始对象的事件附加到Cloned副本非常简单,只需在Copy =原始值中设置Event声明即可. Deep Clone when events are attached 你是如何在VB.Net中做到这一点的? (使用.Net 2) 我希望也许有反射的东西你可以
继续我昨天的问题,深入研究一个带有C#事件的对象,并将原始对象的事件附加到Cloned副本非常简单,只需在Copy =原始值中设置Event声明即可.
Deep Clone when events are attached
你是如何在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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |