Laden...

gRPC - Repeated String ist Schreibgeschützt

Erstellt von BierDav vor 5 Jahren Letzter Beitrag vor 5 Jahren 1.241 Views
BierDav Themenstarter:in
38 Beiträge seit 2019
vor 5 Jahren
gRPC - Repeated String ist Schreibgeschützt

Hallo,
ich will in meinem Programm alle namen der Sub-Directories auslesen und zurückgeben

message HelloReply 
{
  repeated string Directrories = 1;
}

aber bei mir ist Directories schreibgeschützt also es hat nur eine get funktion und keine
set und wenn ich wie im Beispiel

repeated string Directrories = 1 [packed=true];

verwende mag protoc es nicht compilieren es gib mir den ExitCode 1 zurück.
Kann mir bitte wer helfen wie ich ein String Array in gRPC mache bzw. Protobuf

LG BierDav

Trifft eine Programmiererin ihre Freundin und die Freundin fragt: "Mit welchen Typen hängst du so in letzter Zeit rum?" Die Programmiererin antwortet: „integers, booleans und strings“

16.807 Beiträge seit 2008
vor 5 Jahren

Du solltest Schnittstellen stets erweiterbar designen; und das ist Dein Konstrukt nicht.
Es macht wenig Sinn das Directory als String zu repräsentieren.

Wieso verwendest Du nicht etwas alá

message DirectoryEnumerationReply
{
  repeated Directory directrories = 1;
}

message Directory {
  string name = 1;
}

Damit kannst Du das Directory auch stets erweitern mit weiteren Eigenschaften.
Davon abgesehen dürfte doch packed auf String gar nicht funkionieren; packed geht ja nur auf numerische Werte IIRC.
Sicher, dass das Beispiel hier string verwendet? Kann ich kaum glauben...zeig mal bitte das Beispiel.

Aber das kannst Du sicher der Doku entnehmen. Und schau Dir in der Doku gleich die empfehlene Schreibweise an...

BierDav Themenstarter:in
38 Beiträge seit 2019
vor 5 Jahren

Nein im Beispiel ist es mit einem int32 und irgendwie ist dann Directrories noch immer Schreibgeschützt:


                DirectoryInfo info = new DirectoryInfo(request.Path);
                List<directory> dirs = new List<directory>();
                foreach(DirectoryInfo dir in info.GetDirectories())
                {
                    dirs.Add(new directory { Name = dir.Name });
                }
                var resault =Task.FromResult(new DirectoryEnumerationReply { Directrories = dirs });

,aber trotzdem danke.

LG BierDav

Trifft eine Programmiererin ihre Freundin und die Freundin fragt: "Mit welchen Typen hängst du so in letzter Zeit rum?" Die Programmiererin antwortet: „integers, booleans und strings“

16.807 Beiträge seit 2008
vor 5 Jahren

Ich hab leider keine Ahnung, worauf sich Dein "Schreibgeschützt" bezieht....

BierDav Themenstarter:in
38 Beiträge seit 2019
vor 5 Jahren

Hab's gerade gefunden. Directories ist zwar Schreibgeschützt aber man kann trotzdem Items hinzufügen. Aber man muss das Reply schon vorher deklariert haben wie hier:


                var reply = new DirectoryEnumerationReply();
                foreach(DirectoryInfo dir in info.GetDirectories())
                {
                    reply.Directrories.Add(new directory { Name = dir.Name });
                }
                var resault =Task.FromResult(reply);

LG BierDav

Trifft eine Programmiererin ihre Freundin und die Freundin fragt: "Mit welchen Typen hängst du so in letzter Zeit rum?" Die Programmiererin antwortet: „integers, booleans und strings“

BierDav Themenstarter:in
38 Beiträge seit 2019
vor 5 Jahren

Für die Administration.
Ihr könnt dieses Thema schließen.
Meine Frage wurde besser als gedacht beantwortet. 😄

LG BierDav

Trifft eine Programmiererin ihre Freundin und die Freundin fragt: "Mit welchen Typen hängst du so in letzter Zeit rum?" Die Programmiererin antwortet: „integers, booleans und strings“