Общий интерфейс C # с разными типами возврата

У меня есть веб-сервис, который может возвращать данные в нескольких форматах. Например json и xml. Я создаю простой C # api для этого веб-сервиса, и я хотел бы, чтобы методы могли возвращать полностью сериализованные объекты из json, raw json или raw xml. Например:

List<Order> GetOrders(int customerId)
string GetOrders(int customerId)
XMLDocument GetOrders(customerId)

Customer GetCustomer(int customerId)
string GetCustomer(int customerId)
XMLDocument GetCustomer(int customerId)

У меня есть идея сделать свободный API, в котором вы бы вызывали метод SetFormat (), который затем возвращал бы общий интерфейс для вышеуказанных методов. Но я застрял в том, как будет выглядеть этот интерфейс, поскольку реализация, возвращающая сериализованные объекты, возвращает объекты разных типов.

Еще одно более простое решение - просто иметь методы, возвращающие сериализованные объекты, а затем добавлять параметр out, например:

List<Order> GetOrders(int customerId, out string data)

но это не очень хорошее решение, я думаю ....

ОБНОВЛЕНИЕ

Я предпочел неуниверсальное решение, которое предложил Шорд, я слишком усложнил свою проблему. Вот что я в итоге сделал:

public class ServiceEntity {
    List<Order> GetOrders(int customerId)....
}    
public class ServiceJson {
    string GetOrders(int customerId)....
}
public class ServiceXml {
    XmlDocument GetOrders(int customerId)....
}

Затем беглый класс обслуживания вроде этого:

public class Service : IService {
    ....
    public AsJson() { return new ServiceJson(); }
    public AsEntity() { return new ServiceEntity(); }
    public AsXml() { return new ServiceXml(); }
}

Используется так:

string json = Service.New().AsJson().GetCategories(1);
List<Order> = Service.New().AsEntity().GetCategories(1);

Спасибо за все ответы!

7
задан ZNS 20 October 2011 в 15:49
поделиться