4 Stimmen

Abrufen von *.proto-Dateien auf der Grundlage von c#-Klassen

Ich habe folgenden Anwendungsfall: Es gibt mehrere Baugruppen, die mit ProtoContract-Klassen dekoriert sind, und ich möchte Proto-Dateien basierend auf Baugruppen generieren. Die Frage ist also, wie es getan werden kann?

Meine erste Absicht war es, Serailizer.GetProto zu verwenden, aber es ist generische Methode, die nicht für mich funktioniert, weil ich nur Klasse Typ in Laufzeit kennen.

Auch warum in r480 GetProto ist nicht impelemented?

Ich bin mir auch über VS08/10 im Klaren, aber es scheint in meinem Szenario nicht zu helfen.

Vielen Dank im Voraus.

5voto

Rich O'Kelly Punkte 40414

Sie können die Serializer.GetProto Methode mit ein wenig Nachdenken:

var method = typeof(Serializer).GetMethod("GetProto").MakeGenericMethod(type);
Func<string> getProto = Delegate.CreateDelegate(typeof(Func<string>), method);
var proto = getProto();

4voto

Marc Gravell Punkte 970173

Auch warum in r480 GetProto ist nicht impelemented?

Denn ich habe wenig Zeit und viele Anfragen. Viele Leute haben mich nach folgenden Themen gefragt GetProto In letzter Zeit habe ich das auf meiner Liste nach oben geschoben. Ich muss bei der Arbeit an Funktionen Prioritäten setzen, und zwar in Bezug auf den Nutzen, den Aufwand und die wahrscheinliche Nutzung. GetProto ist zwar nicht das "Herzstück" der Serialisierung, aber ich möchte es weiterhin unterstützen. Es kostet einfach Mühe. Die Verwendung dieser Funktion ist so, dass ich nicht das Gefühl, es rechtfertigt die Verzögerung der v2-Code-Basis.

Die gute Nachricht ist, dass der Kern von v2 nicht-generisch ist, wobei die alte generische API nur aus Kompatibilitätsgründen beibehalten wird. Wenn ich also tun neu zu implementieren, wird es ohne Generika vollständig nutzbar sein.


Update: eine experimentelle Version davon wurde in r545 aufgenommen. Er besteht die v1-Tests, aber: es gab nicht viele v1-Tests für diese Funktion! Also: Ich werde in Kürze weitere Tests für diese Funktion hinzufügen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X