2011-11-27 5 views
0

Je vois la programmation orientée composite et DCI comme des techniques intéressantes à utiliser dans un environnement de repos, mais j'ai rencontré un problème. Est-il possible de sérialiser un objet mixin et d'obtenir toutes ses propriétés ? Par exemple:Sérialisation d'objets composés

public class IHasOwner 
{ 
    string owner(); 
} 

public class HasEngine 
{ 
    string engine(); 
} 

Disons que nous faisons un objet CarComposite avec les deux classes ci-dessus comme mixins. Pourrais-je désérialiser cette classe CarComposite pour obtenir le code XML suivant ?:

<CarComposite> 
    <owner></owner> 
    <engine></engine> 
</CarComposite> 

Je suis curieux de la façon dont cela est géré en général, mais avec près attention sur .NET, puisque vous CANOT désérialiser Interfaces.

+0

Je suppose que vous pourriez toujours rouler un sérialiseur à la main sur les classes System.Xml supérieures, rigtht? Pourriez-vous expliquer pourquoi cela pourrait ne pas résoudre votre problème, et comment vous construisez le composite à partir des mixins en C#? –

+0

Je pourrais construire le composite en utilisant un proxy dynamique ou remixer. Je veux être capable de composer mes objets de domaine à partir de divers objets, au lieu d'utiliser l'héritage. Semblable à ce que vous pouvez faire avec Qi4J. Je suppose qu'il faudrait un sérialiseur personnalisé. –

+0

Je vois si le mixage peut être utilisé avec Rest, comme OpenRasta. Peut-être que la réponse est de mapper les objets de domaine composés aux ressources créées avec l'héritage. C'est la ressource qui est transmise, pas le domaine. De cette façon, les ressources devraient Serializer bien. –

Répondre

1

Je trouve qu'un modèle de vue ou de ressource est souvent appelé dans les services RESTful. C'est à dire. un ensemble de types de données stupides adaptés à la manière dont vous souhaitez exposer la ressource. Ils n'ont pas besoin de faire correspondre les objets de domaine. Cependant, vous devez être capable de faire la carte entre les deux. Le modèle de ressource bête est "facile" à sérialiser.

Pour le mappage entre les objets de modèle de domaine et de service, AutoMapper peut être très utile.