Создать экземпляр сервисного ссылочного типа прокси из исходного типа? - PullRequest
0 голосов
/ 22 июня 2011

Для данного типа, скажем, Apple, я хочу создать эквивалентный тип, который был бы создан, если бы Apple автоматически создавался как прокси-сервер типа службы.

Итак, Apple имеет тип AwesomeWebService.Apple, но когда Studio генерирует прокси-классы для службы AwesomeWebService, создаваемый им тип является чем-то локальным для сборки, содержащей прокси.

Это становится чем-то вроде OtherAssembly.AwesomeWebServiceProxyReference.Apple

Хитрость в том, что я не знаю до времени выполнения, какой тип прокси я хочу создать (Apple или иначе). Это было бы слишком просто.

У меня есть экземпляр клиента справочной службы, скажем, OtherAssembly.AwesomeWebServiceProxyReference.AwesomeWebServiceSoapClient, но я до сих пор не смог использовать эту информацию вместе с исходным типом для получения прокси-типа, который мне нужен. При попытке получить сообщение об ошибке не удалось найти тип в сборке.

Activator.CreateInstance("OtherAssemblyName", "TypeNameOfOriginalType");

где "OtherAssemblyName" берется из proxyClientType.GetType().Assembly.FullName, а "TypeNameOfOriginal" - originalType.GetType().Name

Activator.CreateInstance("OtherAssembly", "Apple");

1 Ответ

0 голосов
/ 23 июня 2011

Разобрался.

Самым простым способом было получить метод, для которого я пытался создать объект (параметр), получить объект ParameterInfo и получить из этого точный тип.

Type t = proxy.GetType();
MethodInfo m = t.GetMethodInfo("methodName");
ParameterInfo[] mParams = m.GetParameters();
string typeName = mParam.ParameterType.AssemblyQualifiedName;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...