1

问题:

我有两个(或更多)非常相似的类:一个类的属性是另一个类的属性的子集。更具体地说,属性名称和语义是相等的,但不一定是它们的类型。但是,如果具有相同名称的属性的类型不同,则这些类型再次非常相似(在相同的意义上)。

我想为所有相似类集派生公共接口,以便我可以以相同的方式使用不同类的实例。

由于我的类有 100 多个属性,如果有可能,我想避免手动创建接口。

接口应该包含所有相似类的所有属性集的联合。(当读取特定对象不存在的属性时,null应该返回。当设置了这样的未定义属性时,什么都不应该发生。)所以我猜接口不再合适,而是包装器类或不同的东西......

语境:

我正在使用 WCF 来使用 Web 服务 ( CreateSalesOrder )。服务的输入消息需要 XML 模式类型Request_SalesOrder的元素,该元素由其他 XSD 类型(如Request_ItemRequest_ShipToLocation等)的子元素组成。

输出消息携带模式类型 Response_SalesOrder 的元素,该元素具有模式类型Response_ItemResponse_ShipToLocation等的相似子元素以及一些附加元素,例如类型Response_PriceTotal的元素PriceTotal

我想使用 ASP.Net MVC 构建一个使用 Web 服务的 UI。因此,我有一个视图呈现用于创建销售订单的表单。提交 Web 服务请求后,表单字段必须使用来自 Web 服务响应消息的值进行更新。

表单字段绑定到访问代理类属性的视图模型。提交表单时,视图模型必须更新代理类 A 的实例,而如果表单使用响应消息中的值呈现,视图模型将从代理类 B 的实例中读取。

4

1 回答 1

0

我认为您在谈论 adpater 设计模式,但我不知道如何避免手动编写界面:http ://en.wikipedia.org/wiki/Adapter_pattern

于 2010-11-04T09:16:01.733 回答