使用带有自动生成代码的protobuf-net(在本例中来自WSDL规范)

时间:2014-06-15 21:32:46

标签: c# soap wsdl protobuf-net wsdl.exe

我的问题类似于this one,除了我想与protobuf-net一起使用的代码是由WSDL实用程序生成的。 “他们告诉我”计划修改生成的代码(添加属性)是不合适的。

编写一些东西来构建一组匹配的DTO类是奇怪的,因为(除了描述的方法之外)所有的类都已经是用[Serializable]标记并具有所有公共属性的公共(部分)类 - 也就是说,它们已经非常像DTO了。

我见过的最简单的解决方案是违反规则并修改代码。如果生成的C#文件中的所有字符串

public partial class

替换为

[ProtoBuf.ProtoContract(ImplicitFields = ProtoBuf.ImplicitFields.AllPublic)]
public partial class

从我的有限测试中可以解决问题。是否存在更好的解决方案?使用该技术有什么问题(除了我正在修改生成的代码)?

1 个答案:

答案 0 :(得分:1)

partial类中的类型级属性可以添加到单独的代码文件中。您只需要单独的文件

[ProtoBuf.ProtoContract(ImplicitFields = ProtoBuf.ImplicitFields.AllPublic)]
public partial class {}

它也必须在右namespace,但你没有说出哪些,所以可能:

namespace Foo {
    [ProtoBuf.ProtoContract(ImplicitFields = ProtoBuf.ImplicitFields.AllPublic)]
    public partial class {}
}