2009-03-26 6 views
1

J'ai commencé à chercher à utiliser proto-buf .Net pour mes besoins de sérialisation pour le navigateur média.Sérialiser et désérialiser des types hérités inconnus

Dans le nouveau système, nous avons un framework d'entité qui peut être étendu avec des plug-ins. Par exemple, nous définissons une classe Media dans la bibliothèque principale, puis les plug-ins peuvent définir des sous-classes telles que Song.

Il semble que proto-buf .Net a besoin de connaître tous les sous-types de notre classe de base définie par le noyau.

Je suis censé décorer ma classe de base avec

[ProtoInclude(2, typeof(Song))] 

Mais ... à ce moment, je ne sais rien de la classe chanson qui n'existe pas encore.

Est-il de retour à la planche à dessin? Est-ce que j'essaie de faire quelque chose pour lequel la bibliothèque n'est pas conçue?

Répondre

1

(de l'auteur)

Dans la version actuelle, il est fixé à des types connus de la société mère. Cependant, il s'agit d'une limitation connue, donc il est prévu d'abstraire le méta-modèle afin qu'il puisse être fourni séparément au moment de l'exécution - globalement comparable à la façon dont vous fournissez ces informations à XmlSerializer (il faudra encore un moyen de fournir des tags (le "2" ci-dessus) par type).

J'ai commencé ce travail, mais je m'attends à ce qu'il prenne quelques semaines pour le faire fonctionner pleinement (le refactor sera également lié à d'autres changements to help compact framework).

Donc, à vous ... si vous pouvez attendre quelques semaines, j'espère avoir quelque chose qui fonctionne.

Notez que vous aurez encore besoin d'une certaine façon de générer (uniques, reproductibles) des tags pour tous les différents types de sous-configuration -, etc.

+0

Ceci est bien sûr la bonne réponse à la question :) Je –

+0

réussi à obtenir ma mise en œuvre de sérialisation actuelle pour répondre à mes besoins limités. http://code.google.com/p/videobrowser/source/browse/branches/big_refactor/TestMediaBrowser/TestSerialization.cs –

+0

Plus tard sur la ligne quand je vous aurai terminé, je verrai si je porte le matériel à utiliser protobuf. Les choses de Jeez deviennent complexes quand vous soutenez les chaînes d'héritage des propriétés ... –

Questions connexes