gpt4 book ai didi

c# - 如何为不是从 MarshalByRefObject 派生的远程对象创建代理?

转载 作者:行者123 更新时间:2023-11-30 19:22:20 26 4
gpt4 key购买 nike

在 AppDomain A 中,我有一个类型为 T 的对象 oT 既不是 Serializable 也不是从 MarshalByRefObject 派生的。 T 类型由我无法控制的插件主机提供。

我想创建一个 AppDomain B 并将代理传递给 oB 中的方法,但我很困惑:如何创建代理?

B 中的方法应该能够调用 o 上的方法并读取属性等。这些方法的结果必须以类似的方式进行代理。

最佳答案

我建议您创建一个适当的代理对象,该对象实现与您尝试代理的对象相同的接口(interface),并且还继承自 MarshalByRefObject。然后远程代理对象。在服务器端,代理将委托(delegate)给您的对象。

根据您的要求,服务器对象将包含静态对象(所有客户端看到相同的对象)或非静态对象(每个客户端都获得一个新副本)。

在静态成员的情况下,您需要在服务器中创建代理并用您的对象初始化它,或者第一个分配的代理(当第一个客户端连接时)创建您的对象并初始化自己。我用过前者。

当然不要忘记租约。

关于c# - 如何为不是从 MarshalByRefObject 派生的远程对象创建代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1366332/

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