Question

Essayer d'obtenir mon esprit autour de google protobuf. J'ai trouvé une certaine mise en œuvre de protobuf en C #, mais ils semble manquer une caractéristique:. La capacité de générer des fichiers automatiquement .proto d'une classe existante C # décorée avec des attributs

La raison pour laquelle je veux le faire de cette façon au lieu d'aller des classes C # générées automatiquement à partir .proto fichier est parce que je l'ai déjà les classes C # définies dans mon projet et je ne veux pas les dupliquer juste pour satisfaire Protobuf .

Quelqu'un at-il rencontré un tel scénario?


Mise à jour

Est-ce possible de décorer une classe C # et ne pas utiliser un fichier .proto à utiliser protobuf?

Était-ce utile?

La solution

Bonnes nouvelles; ce que vous avez décrit (ayant des classes existantes C #) est le cas d'utilisation prévue de protobuf-net. Tous les trucs .proto ( "de Protogen", le VS add-in, etc.) ont tous été ajoutés comme . Le noyau de protobuf-net ne sait pas à leur sujet ou se soucient d'eux.

tampons de protocole définit un DSL (.proto, comme vous dites) qui est partagé entre les mises en œuvre, et est (parfois) utilisé pour la génération de code. Quand j'ai écrit aspect protobuf-net, la génération de code n'a pas été ma plus grande préoccupation -. Simplement que les développeurs .NET sont généralement coupables (moi-même inclus) de « première mise en œuvre » plutôt que « premier contrat »

En conséquence, protobuf net n'a pas besoin .proto fichiers pour travailler; une classe attribuée est suffisante pour sérialiser sans ambiguïté / deserialize. Il suffit d'utiliser Serializer.Serialize, .Merge et .Deserialize (etc).

Cela dit; il fait inclure des très sous-développé et expérimental soutien à ceci:

string proto = Serializer.GetProto<YourType>();

Ce qui est loin d'être complète, mais elle peut travailler pour les types simples. Si vous avez des cas spécifiques où il tombe en panne, laissez-moi savoir (ajouter un commentaire ou le journal d'un problème). Pourtant; la plupart du temps, les gens intéressés à .proto écrirait le .proto premier et le travail à partir de là.

Des exemples de types décorés de travail sont présentés sur le projet page d'accueil ; il est tout à vous de décider si vous utilisez des attributs WCF, les attributs xml ou attributs protobuf-net (bien que ces derniers fournissent plus de contrôle sur certains points de sérialisation spécifiques, telles que l'héritage et mises en page numériques).

Autres conseils

Avant Skeet Marc passe ici et obtient ups massives, laissez-moi souligner protobuf.net.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top