c# 将类型传递给子类

本文关键字:子类 类型 | 更新日期: 2023-09-27 18:33:17

我正在编写一个 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 对象具有传入的类型。

大意如此:
MyResponse response = MyClient.ExecuteCommand<MyDocument>(request);

在本例中,我希望返回的是带有 MyDocument 类型的 DocumentList 的 MyResult。

提前谢谢。

c# 将类型传递给子类

您可以在类上使用泛型:

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使用自己的T创建MyResponse(在本例中为 MyDocument ),使用 var 将使其更容易、更具可读性:

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