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



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

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

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

public partial class

取代
[ProtoBuf.ProtoContract(ImplicitFields = ProtoBuf.ImplicitFields.AllPublic)]
public partial class
从我有限的测试中得到的

将会奏效。是否存在更好的解决方案?使用这种技术有什么问题吗(除了我正在修改生成的代码)?

可以在单独的代码文件中添加partial类中的类型级属性。您所需要的只是一个单独的文件,其中只是:

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

它也必须在正确的namespace中,但你没有说哪个,所以可能:

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

最新更新