从WCF服务生成的模型重命名属性名称

时间:2013-08-21 07:10:43

标签: c# .net wcf

我目前正在使用旧版WCF服务,该服务不符合开发中应用程序的命名标准。现在,在针对REST服务开发时,我自己创建模型,很容易重命名属性,如下所示:

[DataContract]
public class SomeModel
{
    [DataMember(Name = "id")]
    public string Id { get; set; }

    // ...
}

但是使用WCF服务它会生成模型,我不想编辑生成的文件,因为当某人/某事件再次触发代码生成时,我的所有更改都将丢失。那么在使用WCF服务时如何实现相同的目标呢?

3 个答案:

答案 0 :(得分:3)

How about adapter pattern?

这将允许您在应用程序中使用类对象myClass,而当它被传递给服务时,您可以使用自动生成的exposedClaSs。

答案 1 :(得分:2)

如果查看生成的代码,您会看到DataContract类是部分的。

您可以使用相同的部分类定义向项目添加文件,并使用正确的名称创建包装器属性。

答案 2 :(得分:0)

在我看来,使用代理生成器是完全浪费时间:你想要做的是手工管理你的类,让其他东西以一种不会影响你的方式处理底层实现细节,并且能够适应更改。我们在当前项目中执行此操作的方式是使用城堡动态代理将调用分派给通道工厂。

我们已经完成了类似http://www.planetgeek.ch/2010/10/13/dynamic-proxy-for-wcf-with-castle-dynamicproxy/之类的工作,并发现它可以很好地运作。