Проблема:
У меня есть два (или более) класса, которые очень похожи : свойства одного класса являются подмножеством свойств другого класса. Более конкретно, имена свойств и семантика равны, но не обязательно их типы. Однако, если типы свойств с одинаковыми именами различаются, эти типы снова очень похожи (в том же смысле).
Я хочу получить общие интерфейсы для всех наборов похожих классов, чтобы я мог одинаково использовать экземпляры разных классов.
Поскольку мои классы имеют более 100 свойств, я бы не хотел создавать интерфейсы вручную, если это возможно случайно.
Интерфейс должен охватывать объединение всех наборов свойств всех похожих классов. (Когда читается свойство, которое не существует для конкретного объекта, должно быть возвращено null
. Когда задано такое неопределенное свойство, ничего не должно происходить.) Так что я думаю, что интерфейс больше не подходит, но скорее класс-обертка или что-то другое ...
Контекст:
Я использую WCF для использования веб-службы ( CreateSalesOrder ). Для входного сообщения службы требуется элемент типа XML-схемы Request_SalesOrder , состоящий из дочерних элементов других типов XSD, таких как Request_Item , Request_ShipToLocation и т. Д.
Выходное сообщение содержит элемент типа схемы Response_SalesOrder , который имеет аналогичные дочерние элементы типов схемы Response_Item , Response_ShipToLocation и т. Д., А также некоторые дополнительные элементы, например элемент PriceTotal типа Response_PriceTotal .
Я хочу создать пользовательский интерфейс для использования веб-службы с использованием ASP.Net MVC. Итак, у меня есть представление для создания формы заказа на продажу. После отправки запроса веб-службы поля формы должны быть обновлены значениями из ответного сообщения веб-службы.
Поля формы связаны с моделью представления, которая обращается к свойствам прокси-классов. Когда форма отправлена, модель представления должна обновить экземпляр прокси-класса A, в то время как, если форма отображается со значениями из ответного сообщения, модель представления считывает из экземпляра прокси-класса B.