我可以使用Protobuf-net控制生成的类的可见性吗?

时间:2011-02-22 18:56:39

标签: c# protocol-buffers protobuf-net

我正在使用protobuf-net(感谢Marc :))来序列化我的对象模型,但我希望对象模型在我的程序集之外不可见(具体来说,我希望它是内部的)。

默认情况下,protobuf-net似乎会生成公共部分类。我可以告诉它标记班级internal吗?

以下是我的.proto文件的缩减版本:

package MyProject.Core.Persistence;

option optimize_for = SPEED;

message DataObject {
  required string name = 1;
  required int32 id = 2;
}

生成以下类定义:

[global::System.Serializable,
   global::ProtoBuf.ProtoContract(Name=@"DataObject")]
public partial class DataObject : global::ProtoBuf.IExtensible
{
  public DataObject () {}

  ...
}

2 个答案:

答案 0 :(得分:3)

目前不在;但是,您可以根据自己的需要编辑csharp.xslt

这似乎不是一种常见的情况,但它可以作为一个选项轻松添加。

答案 1 :(得分:0)

解决方案:

您可以添加以下两行

import "protobuf-net/protogen.proto";
option (.protobuf_net.fileopt).access = INTERNAL;

在消息定义之前。

完整示例代码:

package MyProject.Core.Persistence;

import "protobuf-net/protogen.proto";
option (.protobuf_net.fileopt).access = INTERNAL;

option optimize_for = SPEED;

message DataObject {
  required string name = 1;
  required int32 id = 2;
}

参考:

mgravell的protogen.proto