2011-07-18 18 views
2

Cook Computing博客有一篇文章,討論如何使用.NET 4中的動態來創建動態RPC調用。 (郵編:ALTERNATIVE SYNTAX FOR MEMBER CALLS ON C# DYNAMIC TYPESXML-RPC.NET和C#動態類型

的後顯示下面的例子:

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。謝謝。感謝圖書館! –