我正在编写一个RESTFUL客户端库,返回对象类型的一部分取决于请求的参数。
例如,客户端有一个名为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方法,并让它返回MyResponse对象,其中MyResult对象的IDocument是传入的类型。
这样的效果:
MyResponse response = MyClient.ExecuteCommand<MyDocument>(request);
在这个例子中,我想要返回的是具有MyDocument类型的DocumentList的MyResult。
提前致谢。
答案 0 :(得分: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);