0

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

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

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

public partial class

被替换为

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

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

4

1 回答 1

1

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

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

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

namespace Foo {
    [ProtoBuf.ProtoContract(ImplicitFields = ProtoBuf.ImplicitFields.AllPublic)]
    public partial class {}
}
于 2014-06-15T21:57:39.140 回答