2011-07-18 5 views
2

「Cook Computing」のブログには、.NET 4のダイナミクスを使用して動的RPC呼び出しを作成する方法についての記事が掲載されています。XML-RPC.NETとC#の動的タイプ

ポストは、次の例を示しています(ALTERNATIVE SYNTAX FOR MEMBER CALLS ON C# DYNAMIC TYPESポスト):

using System.Dynamic; 

class XmlRpcClient : DynamicObject 
{ 
    string endpoint; 

    public XmlRpcClient(string endpoint) 
    { 
    this.endpoint = endpoint; 
    } 

    public object Invoke(string methodName, object[] args) 
    { 
    return 5; // actually make call to XML-RPC endpoint here 
    } 

    public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, 
    out object result) 
    { 
    result = Invoke(binder.Name, args); 
    return true; 
    } 
} 

を私は理解していない部分は、「ここで実際にXML-RPCエンドポイントに電話をかける」旨のコメントです。

invokeメソッドでXML-RPC.NETライブラリを使用する方法はありますか、またはHttpWebRequest呼び出しを行う必要がありますか?私は記事を書いたとき

おかげ

+0

これを使用する目的は何ですか?とにかく静的に定義されたメソッドを持つXML-RPCサービスを呼び出していませんか? – mellamokb

+0

XML-RPC.NETライブラリを使用する場合は、呼び出すサービスを表すインタフェースを定義する必要があります。私はxml-rpcサービスの複数のバージョンを呼び出すため、ダイナミクスを使用したいと思います。私は遭遇するサービスの各バージョンに対して定義されたインターフェースを持つことを避けようとしています。 –

+0

XML-RPCでは、インターフェイスがXmlRpcServiceスーパークラスとメソッドを装飾する属性を介した通信を処理するため、インターフェイスなしでサービスと通信できる方法はわかりません。ライブラリのリバースエンジニアリングをして、あなたのポストに書いたように、HttpWebRequestの呼び出しを手作業で行って、その下の状況を確認する必要があります。 – mellamokb

答えて

2

は「代替構文は...」C#での動的なサポートは、ちょうどので、私はちょうどこれらの新機能を利用するために可能な実装を記述したと発表されていました。

「実際にXML-RPCエンドポイントをここで呼び出す」を実装するには、XmlRpcClientProtocolクラスを呼び出す必要がありますが、このクラスではこのように少しの変更を加える必要があります。

+0

私はXmlRpcClientProtocolを使用しているという疑いがありました。ありがとう。図書館をありがとう! –

関連する問題