2012-05-03 51 views
3

我正在編寫一個RESTFUL客戶端庫,而部分返回對象類型取決於請求的參數。c#將類型傳遞給子類

例如,客戶端有一個名爲ExecuteCommand方法,返回響應對象,它看起來是這樣的:

public class MyResponse 
{ 
    public MyResult Result{ get; set; } 
    public MyResponseHeader ResponseHeader { get; set; } 
} 

這裏是MyResult類:

public class MyResult 
{ 
    public object[] DocumentList{ get; set; } 
    public int NumRecords{ get; set; } 
    public int Start{ get; set; } 
} 

我想什麼要做的是將一個「文檔類型」傳遞給ExecuteCommand方法,並讓它返回帶有IDocument的MyResult對象的MyResponse對象,並將其傳入。

這樣的效果:
MyResponse response = MyClient.ExecuteCommand<MyDocument>(request);

在這個例子中,我想返回的是MyResult,它帶有一個類型爲MyDocument的DocumentList。

在此先感謝。

回答

5

你可以使用泛型在你的類:

public class MyResponse<T> 
{ 
    public MyResult<T> Result{ get; set; } 
    public MyResponseHeader ResponseHeader { get; set; } 
} 

public class MyResult<T> 
{ 
    public T[] DocumentList{ get; set; } 
    public int NumRecords{ get; set; } 
    public int Start{ get; set; } 
} 

然後你就可以使用有你ExecuteCommand創建MyResponse自己的T(在這種情況下MyDocument),並使用VAR將使其更容易和更具可讀性:

var response = MyClient.ExecuteCommand<MyDocument>(request); 
+0

這實際上是我編碼它的方式,我只是不確定是否將這種類型傳遞給下一行。謝謝,德魯 – dhysong