2017-01-24 21 views
0

私はもともとGoogle Protobuf 3.1 protocコンパイラを使ってFilepath.csクラスを自動生成していました。 filepath.protoファイルはproto2構文のために書かれているので、私はproto3にcomformするファイルを手動で変更しなければなりませんでした。古いバージョンのGoogle Protobufを使ってオブジェクトを作成する

私のコントロール外の理由から、proto2の構文に固執する必要があることが判明しました。 proto2バージョン3.0.0alpha3がproto2ファイルのC#コード生成をサポートしていることが判明しました。新しいprotocバージョンではproto2ファイルのC#コード生成がサポートされていないため、アルファ3に戻しました。

生成されたコードは変わりありませんし、私の既存のコード(元々protoc 3.1で働いたことは、もはや作品):

FilePath fp = new FilePath 
    { 
     Path = "TestPath", 
     TestValue = 5.0f 
    }; 

このコードの塊は、もはやアルファ3で動作していないファイルを生成しました。 Protobufの古いバージョンを使用してオブジェクトを適切に直列化/逆シリアル化する方法を知っている人もいれば、古いチュートリアルがどこかにアーカイブされている場合もありますか?

私が行うことができる午前:

FilePath fp; 
fp.Path = "test_path_here"; //ERROR - no SETTER, only a GETTER 

フィールドPathTestValueはゲッター、ノーセッターを持っています。

答えて

0

githubのProtobufsプロジェクトの古いバージョンに行くことでそれを解説しました。私はC#で新しいオブジェクトを作成する方法を理解するためのJavaのサンプルを見つけました。この3.0.xのソースを見て、あなたはそれを把握することができる必要があります:https://github.com/google/protobuf/blob/3.0.x/examples/AddPerson.java

これは私がなってしまったものです:

FilePath.Builder fp = FilePath.CreateBuilder(); 
    fp.SetPath("TestPath"); 
    fp.SetTestValue(7.0f); 
関連する問題