2012-05-03 5 views
3

Я пишу RESTFUL клиентскую библиотеку, а часть типа объекта возврата зависит от параметров запроса.C# Передача типа дочернему классу

Например, клиент имеет метод 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, имеющим тип IDocument.

Что-то по этому поводу:
MyResponse response = MyClient.ExecuteCommand<MyDocument>(request);

В этом случае, что я хотел бы, чтобы вернулись является MyResult с DocumentList типа MyDocument.

Заранее спасибо.

ответ

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 Создать свой MyResponse используя свой собственный T (в данном случае MyDocument), и используя вар будет сделать еще проще и более удобным для чтения :

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

Это на самом деле то, как я его закодировал, я просто не был уверен в передаче типа по линии. Спасибо, Дрю – dhysong

Смежные вопросы