Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用protobuf net和自动生成的代码(本例中来自WSDL规范)_C#_Soap_Wsdl_Protobuf Net_Wsdl.exe - Fatal编程技术网

C# 使用protobuf net和自动生成的代码(本例中来自WSDL规范)

C# 使用protobuf net和自动生成的代码(本例中来自WSDL规范),c#,soap,wsdl,protobuf-net,wsdl.exe,C#,Soap,Wsdl,Protobuf Net,Wsdl.exe,我的问题与类似,只是我想与protobuf net一起使用的代码是由WSDL实用程序生成的。“他们告诉我”计划修改生成的代码(添加属性)是不合适的 考虑到(除了所描述的方法之外)所有类都已经是用[Serializable]标记的公共(部分)类,并且具有所有公共属性——也就是说,它们已经非常像DTO了,因此编写一些东西来构建一组匹配的DTO类是很奇怪的 我见过的最简单的解决方案是违反规则并修改代码。如果生成的C#文件中的所有字符串 被替换为 [ProtoBuf.ProtoContract(Impl

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

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

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

被替换为

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

从我有限的测试,这将做的把戏。是否存在更好的解决方案?使用这种技术有什么问题吗(除了我正在修改生成的代码之外)?

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

[ProtoBuf.ProtoContract(ImplicitFields = ProtoBuf.ImplicitFields.AllPublic)]
public partial class {}
它也必须位于正确的
命名空间中,但您没有说明是哪个,因此可能:

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