派生WCF代理类的接口

时间:2010-11-04 06:36:49

标签: c# wcf interface code-generation proxy-classes

问题:

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

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

由于我的类有超过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的实例中读取。

1 个答案:

答案 0 :(得分:0)

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