3

我正在写一个 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 方法,并让它返回带有 MyResult 对象的 MyResponse 对象,其中 IDocument 是传入的类型。

有这样的效果:
MyResponse response = MyClient.ExecuteCommand<MyDocument>(request);

在这种情况下,我想要返回的是带有 MyDocument 类型的 DocumentList 的 MyResult。

提前致谢。

4

1 回答 1

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创建你的,并且使用 var 将使它更容易和更具可读性:MyResponseTMyDocument

var response = MyClient.ExecuteCommand<MyDocument>(request);
于 2012-05-03T15:33:10.680 回答