c#将类型传递给子类

dhy*_*ong 3 c# generics

我正在编写RESTFUL客户端库,返回对象类型的一部分取决于请求的参数.

例如,客户端有一个名为ExecuteCommand的方法,它返回一个响应对象,如下所示:

public class MyResponse
{
   public MyResult Result{ get; set; }
   public MyResponseHeader ResponseHeader { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是MyResult类:

public class MyResult
{
   public object[] DocumentList{ get; set; }
   public int NumRecords{ get; set; }
   public int Start{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想要做的是将"文档类型"传递给ExecuteCommand方法,并让它返回MyResponse对象,其中MyResult对象的IDocument是传入的类型.

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

在这个例子中,我想要返回的是具有MyDocument类型的DocumentList的MyResult.

提前致谢.

Jus*_*ony 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; }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以使用它自己ExecuteCommand创建你MyResponseT(在这种情况下MyDocument),并使用var将使它更容易和更可读:

var response = MyClient.ExecuteCommand<MyDocument>(request);
Run Code Online (Sandbox Code Playgroud)