MarshalByRefObject вместо __TransparentProxy - PullRequest
0 голосов
/ 04 июня 2018

У меня есть C # dll, который хорошо работает с приложением .NET Framework.Это 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...