gpt4 book ai didi

.net - 如何将原始对象的事件附加到深度复制的克隆

转载 作者:行者123 更新时间:2023-12-04 20:23:13 25 4
gpt4 key购买 nike

跟进我昨天的问题,用 C# 中的事件深度复制对象并将原始对象的事件附加到克隆副本非常容易,您只需在 Copy 中设置 Event 声明 = 原始值。 Deep Clone when events are attached

你如何在 VB.Net 中做到这一点? (使用 .Net 2)

我希望也许有一些带有反射的东西,你可以检查哪些事件是绑定(bind)的,并以某种方式将它们转移到新对象。

最佳答案

是的,你可以,而且它并不难,但似乎没有很多关于这方面的信息,所以很好的问题。
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

关于.net - 如何将原始对象的事件附加到深度复制的克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com