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。
提前谢谢。
您可以在类上使用泛型:
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);