c# - MarshalByRefObject 而不是 __TransparentProxy
问题描述
我有与 .NET Framework 应用程序配合良好的 C# dll。该DLL提供WCF客户端。问题是提到的客户端不能作为Unity应用程序的一部分工作。
我花了一些时间试图理解这个问题,这就是我发现的:工厂的CreateChannel()
方法返回MarshalByRefObject
而不是 __TransparentProxy。
我System.Reflection
用来获取远程对象的属性并调用它们。这种方法非常适合 __TransparentProxy。例如,它根本不起作用MarshalByRefObject
。__TransparentProxy 具有与远程对象相同的所有属性。另一方面,MarshalByRefObject
实例没有任何这些属性。
在这种情况下我能做些什么吗?
更新:
这是代码示例
NetTcpBinding binding = new NetTcpBinding(SecurityMode.None);
object[] parameters = new object[]
{
binding,
new EndpointAddress("net.tcp://127.0.0.1:1234/ICP01")
};
Type factoryType = typeof(ChannelFactory<>).MakeGenericType(typeof(IICP01Remote));
ChannelFactory<IICP01Remote> factory = (ChannelFactory<IICP01Remote>)Activator.CreateInstance(factoryType, parameters);
IICP01Remote remote = factory.CreateChannel();
//remote is MarshalByRefObject not a __TransparentProxy
float result = remote.GetValue(1);
factory.Close();
解决方案
推荐阅读
- deployment - 需要IP才能连接Zeit上的自定义域名
- javascript - Bootstrap Tour - 强制悬停在元素上
- laravel - 自定义生成密钥的 Laravel 加密错误
- python - Pyinstaller onedir 选项 - 目录外的 exe 文件
- c++ - 引入 ofstream 时 C++ 数据文件读取不正确?
- python - 如何在字符串搜索中使用“查找”来定位搜索结果左侧的起始位置
- python - 如何用循环刮掉多个页面的麻烦?
- java - 是否可以根据需要使用 Spring Data Rest 描述 ALPS 实体字段
- java - 对象继承 - 重构问题 - 创建灵活服务的可能性
- python - 使用正则表达式从字符串中过滤值