【问题标题】:Using protobuf-net with code auto-generated (from WSDL spec in this case)将 protobuf-net 与自动生成的代码一起使用(在本例中来自 WSDL 规范)
【发布时间】:2014-06-15 21:32:45
【问题描述】:

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

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

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

public partial class

被替换为

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2010-11-21
      • 1970-01-01
      • 2014-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-21
      • 1970-01-01
      • 2014-04-10
      相关资源
      最近更新 更多