2011-06-22 65 views
0

給定一個類型,比如說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"); 

回答

0

想通了。

最簡單的方法就是獲取方法我試圖爲(參數)創建對象,獲取ParameterInfo對象,並從中獲取確切的類型。

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