我的问题类似于this one,除了我想与protobuf-net一起使用的代码是由WSDL实用程序生成的。 “他们告诉我”计划修改生成的代码(添加属性)是不合适的。
编写一些东西来构建一组匹配的DTO类是奇怪的,因为(除了描述的方法之外)所有的类都已经是用[Serializable]标记并具有所有公共属性的公共(部分)类 - 也就是说,它们已经非常像DTO了。
我见过的最简单的解决方案是违反规则并修改代码。如果生成的C#文件中的所有字符串
public partial class
替换为
[ProtoBuf.ProtoContract(ImplicitFields = ProtoBuf.ImplicitFields.AllPublic)]
public partial class
从我的有限测试中可以解决问题。是否存在更好的解决方案?使用该技术有什么问题(除了我正在修改生成的代码)?
答案 0 :(得分:1)
partial
类中的类型级属性可以添加到单独的代码文件中。您只需要单独的文件只:
[ProtoBuf.ProtoContract(ImplicitFields = ProtoBuf.ImplicitFields.AllPublic)]
public partial class {}
它也必须在右namespace
,但你没有说出哪些,所以可能:
namespace Foo {
[ProtoBuf.ProtoContract(ImplicitFields = ProtoBuf.ImplicitFields.AllPublic)]
public partial class {}
}