【发布时间】:2021-03-19 22:33:44
【问题描述】:
由于某种原因,生成的代码包含内部构造函数而不是公共构造函数:
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
internal MyProtobufMessage()
{
OnConstruction();
}
来自official document,应该是公开的:
// Parameterless constructor which calls the OnConstruction partial method if provided.
public Foo();
我想知道是否可以指定任何选项来生成公共构造函数。我需要它是公共的,因为我使用的是通用模板,它要求类型具有公共构造函数(new() 约束)。
我正在使用的 Protobuf 版本:3.11.4
.proto 文件是这样的:
syntax = "proto3";
import "timestamp.proto";
package MyNamespace;
option csharp_namespace = "MyNamespace";
message MyProtobufMessage{
...
}
【问题讨论】:
-
我删除了 protobuf-net 标签,因为您使用的是 Google 工具,而不是 protobuf-net。也就是说:protobuf-net 喜欢并接受公共无参数构造函数!你可以通过protogen.marcgravell.com 运行你的架构,看看它想要什么。
标签: protocol-buffers protobuf-csharp-port