问题:
我有两个(或更多)非常相似的类:一个类的属性是另一个类的属性的子集。更具体地说,属性名称和语义是相同的,但不一定是它们的类型。但是,如果具有相同名称的属性的类型不同,则这些类型再次非常相似(在相同意义上)。
我想为所有类似的类派生公共接口,所以我可以以相同的方式使用不同类的实例。
由于我的类有超过100个属性,我想避免手动创建接口,如果可能的话。
接口应该包含所有类似类的所有属性集的并集。 (当读取属性时,特定对象不存在,应该返回null
。当设置了这样的未定义属性时,什么都不应该发生。)所以我猜一个接口不再适合了,而是一个包装类或不同的东西......
上下文
我正在使用WCF来使用Web服务( CreateSalesOrder )。服务的输入消息需要XML模式类型的元素 Request_SalesOrder ,其中包含其他XSD类型的子项,如 Request_Item , Request_ShipToLocation 等。
输出消息带有模式类型 Response_SalesOrder 的元素,该元素具有类似于模式类型 Response_Item , Response_ShipToLocation 等的子元素。和一些其他元素,例如元素 PriceTotal Response_PriceTotal 。
我想使用ASP.Net MVC构建一个使用Web服务的UI。所以我有一个视图渲染表单来创建销售订单。提交Web Service请求后,必须使用Web Service响应消息中的值更新表单字段。
表单字段绑定到访问代理类属性的视图模型。提交表单时,视图模型必须更新代理类A的实例,而如果使用响应消息中的值呈现表单,则视图模型将从代理类B的实例中读取。