У меня есть веб-сервис, который может возвращать данные в нескольких форматах.Например, 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 (), который бы затем возвращал общий интерфейс для вышеуказанных методов.Но я застрял на том, как будет выглядеть этот интерфейс, поскольку реализация, возвращающая сериализованные объекты, возвращает объекты разных типов.
Другое простое решение - просто иметь методы, возвращающие сериализованные объекты, а затем добавить выходПараматер, как это:
List<Order> GetOrders(int customerId, out string data)
но это не очень хорошее решение, я думаю ....
ОБНОВЛЕНИЕ
Я предпочел не универсальныйРешение, которое предложил Sjoerd, я слишком усложнил мою проблему.Вот что я в итоге сделал:
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);
Спасибо за всеответы!