首页 > 解决方案 > 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();

标签: c#wcfunity3d

解决方案


推荐阅读