0

どのような状況で、各プロパティが getter のみ (setter ではない) を持つファイル生成クラスにprotogen.exe適用できますか?.protoC#

package MyLibrary.MyProto                                                               

import "MyExternalType.proto";                                                                                                                          
option optimize_for = SPEED;                                                                        

message MyProto {                                                                           
    repeated MyExternalType MyProperty = 1;                                                 
}


//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

// Generated from: MyLibrary.MyProto
// Note: requires additional types generated from: MyExternalType.proto
namespace MyLibrary
{
  [global::System.Serializable, global::ProtoBuf.ProtoContract(Name=@"MyProto")]
  public partial class MyProto : global::ProtoBuf.IExtensible
  {
    public MyProto() {}

    private readonly global::System.Collections.Generic.List<MyExternalType> _MyProperty = new global::System.Collections.Generic.List<MyExternalType>();
    [global::ProtoBuf.ProtoMember(1, Name=@"MyProperty", DataFormat = global::ProtoBuf.DataFormat.Default)]
    public global::System.Collections.Generic.List<MyExternalType> MyProperty
    {
      get { return _MyProperty; }
    }

    private global::ProtoBuf.IExtension extensionObject;
    global::ProtoBuf.IExtension global::ProtoBuf.IExtensible.GetExtensionObject(bool createIfMissing)
      { return global::ProtoBuf.Extensible.GetExtensionObject(ref extensionObject, createIfMissing); }
  }

}
4

1 に答える 1

0

それは普通のことかもしれません -- 生成された Java のためです。

これは言います

メッセージの観点からデータを記述する .proto ファイルを作成します。protoc を実行して C# (および必要に応じて Java/C++) を生成します。アプリケーションで、メッセージ タイプに関連付けられたビルダーを使用して、メッセージのインスタンスを作成します。データをストリームにシリアル化します。アプリケーション (または別のアプリ) の別の時点で、データを逆シリアル化します。 ビルダーは可変ですが、ビルダーが構築するメッセージは不変です。ビルダーは、同じビルダーを再度返す Set* メソッド、またはオブジェクト初期化子内で使用できるプロパティのいずれかで使用できます。

于 2016-09-30T16:31:23.713 に答える