c# Pasar tipo a una clase secundaria

Estoy escribiendo una biblioteca de cliente RESTFUL, y parte del tipo de objeto de retorno depende de los parámetros de la solicitud.

Por ejemplo, el cliente tiene un método llamado ExecuteCommand, que devuelve un objeto de respuesta que se ve así:

public class MyResponse
{
   public MyResult Result{ get; set; }
   public MyResponseHeader ResponseHeader { get; set; }
}

Aquí está la clase MyResult:

public class MyResult
{
   public object[] DocumentList{ get; set; }
   public int NumRecords{ get; set; }
   public int Start{ get; set; }
}

Lo que me gustaría hacer es pasar un "Tipo de documento" al método ExecuteCommand y hacer que devuelva el objeto MyResponse con el objeto MyResult con el IDocument del tipo pasado.

Algo en este sentido:
MyResponse response = MyClient.ExecuteCommand<MyDocument>(request);

En este caso, lo que me gustaría haber devuelto es MyResult con una DocumentList de tipo MyDocument.

Gracias de antemano.

preguntado el 03 de mayo de 12 a las 16:05

1 Respuestas

Podrías usar genéricos en tus clases:

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; }
}

Entonces puedes tener tu ExecuteCommand crea tu MyResponse usando su propio T (en este caso MyDocument), y usar var lo hará aún más fácil y legible:

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

contestado el 03 de mayo de 12 a las 16:05

Así es como lo codifiqué, solo que no estaba seguro de pasar el tipo por la línea. Gracias, Drew- cancion

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.