c#将类型传递给子类

时间:2012-05-03 15:27:22

标签: c# generics

我正在编写一个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。

提前致谢。

1 个答案:

答案 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);