2011-01-03 13 views
0

何ヶ月か前に、私はWCFメソッドとそのパラメータをドロップダウンに表示するプロジェクトを行っていました。当時私はサービス参照の追加を使用してプロキシを作成し、コード内にサービスインターフェイスをハードコードしていました。 How can I show all the methods that are available in my WCF in a dropdown しかし、同じようにプロキシを動的に作成しようとすると、以下のコードは機能しません。私が定義した方法だけを表示するのを助けてください。動的に作成されたプロキシのWCFメソッドをフィルタリングできません

// Using Dynamic Proxy Factory by Vipul Modi @ Microsoft 
DynamicProxyFactory factory = new DynamicProxyFactory(txtService.Text); 

// endpoints.    
string sContract = ""; 

foreach (ServiceEndpoint endpoint in factory.Endpoints) 
{ 
    sContract = endpoint.Contract.Name;  //this is the service interface name, IAccountInfoService   
} 
DynamicProxy proxy = factory.CreateProxy(sContract); 
Type proxyType = proxy.ProxyType; 

MethodInfo[] methods = proxyType.GetMethods(); 
foreach (var method in methods) 
{ 
    //if (method.GetCustomAttributes(typeof(OperationContractAttribute), true).Length == 0) 
    // continue; 
    string methodName = method.Name; 
    ddlMethods.Items.Add(methodName); 
} 

コードが.LENGTHが動作しないmethod.GetCustomAttributes(typeof演算(OperationContractAttribute)、true)をコメントしました。それはどんな方法も示していません。私がコメントアウトすると、結果はすべてのメソッドと変数になります。私はそれをユーザー定義のメソッドだけに制限したい。

答えて

0

iはDynamicProxyFactoryについて何も知らないが、http://blogs.msdn.com/b/vipulmodi/archive/2006/11/16/dynamic-programming-with-wcf.aspxを見て、それは私が

1)プロキシdoesntのは、実際に属性を持つメソッドを発することを考えさせます。それはあなたがそれを実現するためにあなた自身のコードを微調整することができるとは思いますが、必要はないようです。

2)あなただけのメソッド名のリストをしたい場合、あなたがfactory.Contractsからそれを得ることができそうです

+0

私は実際にメソッド名を取得したいし、その後に定義されている各メソッドのパラメータリストサービス契約。 ContractDescriptionとOperationDescriptionを使用すると、メソッドのリストを取得できますが、パラメータを取得する方法はわかりません。 –

関連する問題