2017-02-15 2 views
0

私はC#でGoogleプロトコルバッファを使用していますが、私は持っているオブジェクトのフィールドを設定できません。私は2つの.protoファイルを持っています:filepath.protoとfilepaths.proto。 Filepaths.protoには、Filepath.protoメッセージの繰り返しフィールドが含まれています。ここでは、両方のファイルです:Googleプロトコルバッファ - フィールドを設定します。

// filepath.proto 

syntax = "proto3"; 
package TEST; 

message FilePath 
{ 
    string path = 1; 
} 

// filepaths.proto 
syntax = "proto3"; 
import "filepath.proto"; 
package TEST; 

message FilePaths 
{ 
    repeated FilePath file_path = 1; 
} 

私はファイルパスオブジェクトを作成する方法を知っている:

あなたが見ることができるように、ファイルパスメッセージには、いくつかのファイルパスのオブジェクトを使用しています。私が使用して複数のファイルパスオブジェクトを作成する方法を知っている:FP1、FP2、FP3、FP4、およびFP5は、私がコードで作成したファイルパスのオブジェクトである

Google.Protobuf.Collections.RepeatedField<FilePath> filepaths = new Google.Protobuf.Collections.RepeatedField<FilePath>(); 
filepaths.Add(fp1); 
filepaths.Add(fp2); 
filepaths.Add(fp3); 
filepaths.Add(fp4); 
filepaths.Add(fp5); 

FilePaths fpTest = new FilePaths 
{ 
    Path = filepaths // ERROR HERE 
}; 

Visual Studioがつまり、私は唯一のGET、SETませんを取得し、ファイルパスのフィールド「パス」は読み取り専用であることを私に語った:私は、ファイルパスは次のようにオブジェクトを作成します。とにかくこれを回避する方法やこれを修正する方法はありますか?基本的に私はいくつかのFilePathオブジェクトを含むFilePathsオブジェクトを作成しようとしています。

答えて

0

あなたがしなければならないことは、フィールドを設定し、それを括弧で囲むことです。だから私の例では、私はこれを行う必要があります:

FilePaths fpTest = new FilePaths 
{ 
    Path = { filepaths } 
}; 
関連する問題