Comment puis-je générer .proto fichier à partir d'une classe C# décorées avec des attributs?
Essayer d'obtenir mon esprit autour de google protobuf. J'ai trouvé certaines de mise en œuvre de protobuf en C#, mais ils semble manquer d'une fonctionnalité: la possibilité de générer .proto automatiquement les fichiers à partir d'une classe C# décorées avec des attributs.
La raison pour laquelle je veux le faire de cette façon, au lieu d'aller de l'auto-générés classes C# à partir de .proto fichier est parce que j'ai déjà le C# de classes définies dans mon projet et je ne veux pas les répéter juste pour satisfaire ProtoBuf.
Quelqu'un aurait-il rencontré un tel scénario?
Mise à jour
Est-ce possible de les décorer d'une classe C# et de ne pas utiliser .proto fichier à utiliser protobuf?
Vous devez vous connecter pour publier un commentaire.
Bonne nouvelle; ce que vous avez décrit (possèdent déjà des classes C#) est l'utilisation prévue cas de protobuf-net. Tous les .proto trucs ("protogen", le VS add-in, etc) ont été ajoutés comme après-coups. Le noyau de protobuf-net ne les connaît pas ou se soucient d'eux.
tampons de protocole définit un DSL (.proto, comme vous le mentionnez), qui est partagé entre les mises en œuvre, et (parfois) utilisé pour la génération de code. Quand j'ai d'abord écrit protobuf-net, la génération de code aspect n'a pas été ma plus grande préoccupation - simplement .NET développeurs sont généralement coupable (moi y compris) de la mise en œuvre "d'abord" plutôt que le "premier contrat".
En conséquence, protobuf-net n'a pas besoin .proto fichiers de travail; un attribuées classe est suffisant sans ambiguïté sérialiser/désérialiser. Utilisez simplement
Serializer.Serialize
,.Merge
et.Deserialize
(etc).Cela dit, il ne inclure certains très sous-développé et expérimentale soutien pour cette:
C'est loin d'être complète, mais ils peuvent travailler pour les types simples. Si vous avez quelques cas particuliers où il échoue, alors laissez-moi savoir (ajouter un commentaire ou journal d'un problème). Cependant, la plupart du temps, les gens intéressés .proto écrire l' .proto première et de travailler à partir de là.
Des exemples de travail décorées types sont indiqués sur la page d'accueil du projet; il est entièrement à vous de décider si vous utiliser WCF les attributs, les attributs xml ou protobuf-net attributs (bien que ceux-ci offrent plus de contrôle sur certains aspects spécifiques de la sérialisation des points, tels que l'héritage et numériques mises en page).
IList<T>
fonctionne très bien; j'ai aussi modifié pour utiliserList<T>
si la liste n'est pas pré-initialisé..GetProto<T>()
semble être de travailler avec r622.Avant
SkeetMarc s'exécute dans l'ici et devient massive ups, permettez-moi de souligner protobuf.net.