C# 是否从原始类型创建服务引用代理类型的实例?

C# 是否从原始类型创建服务引用代理类型的实例?,c#,web-services,reflection,C#,Web Services,Reflection,给定一个类型,比如说Apple,我想创建一个等价的类型,如果Apple自动生成为服务引用代理类型,那么将创建该类型 因此,Apple有一种类型为AwesomeWebService.Apple,但是当Studio为AwesomeWebService服务生成代理类时,它创建的类型是保存代理的程序集的本地类型 它类似于OtherAssembly.AwesomeWebServiceProxyReference.Apple 诀窍是直到运行时我才知道我要创建什么样的代理类型(Apple或其他)。这太容易了

给定一个类型,比如说
Apple
,我想创建一个等价的类型,如果
Apple
自动生成为服务引用代理类型,那么将创建该类型

因此,
Apple
有一种类型为
AwesomeWebService.Apple
,但是当Studio为
AwesomeWebService
服务生成代理类时,它创建的类型是保存代理的程序集的本地类型

它类似于
OtherAssembly.AwesomeWebServiceProxyReference.Apple

诀窍是直到运行时我才知道我要创建什么样的代理类型(
Apple
或其他)。这太容易了

我确实有一个服务引用客户端的实例,比如说
OtherAssembly.awesomewebservicecoproxyreference.AwesomeWebServiceSoapClient
,但到目前为止,我无法将此信息与原始类型一起使用,以获取我所要的代理类型。当我尝试时,我得到一个错误,在程序集中找不到该类型

Activator.CreateInstance("OtherAssemblyName", "TypeNameOfOriginalType");
其中“OtherAssemblyName”是从
proxyClientType.GetType().Assembly.FullName
收集的,“TypeNameOfOriginal”是
originalType.GetType().Name

Activator.CreateInstance("OtherAssembly", "Apple");
我明白了

最简单的方法就是获取我试图为(parameter)创建对象的方法,获取ParameterInfo对象,并从中获取确切的类型

Type t = proxy.GetType();
MethodInfo m = t.GetMethodInfo("methodName");
ParameterInfo[] mParams = m.GetParameters();
string typeName = mParam.ParameterType.AssemblyQualifiedName;