2010-01-18 5 views
1

J'ai un objet (User) qui n'est pas marqué [Serializable()].convertir un objet non sérialisable en chaîne en C#

J'ai besoin de convertir l'objet entier (y compris les objets enfants) en chaîne.

Il s'agit d'un besoin réel de convertir l'objet à partir d'une réponse d'outil tiers qui n'est pas marquée [Serializable()].

Comment puis-je convertir un objet C# entier en chaîne/xml du scénario ci-dessus?

Répondre

4

Le XmlSerializer n'a pas besoin de l'attribut Serializable, mais il ne peut que sérialiser les membres publics.

Cordialement
Oliver Hanappi


Edit: Vous pouvez créer votre propre classe d'adaptateur qui implémente l'interface IXmlSerializable et représente un objet utilisateur qui obtient l'adaptateur lorsque construit.

+0

Comment puis-je obtenir les membres non-publics à string/xml? L'outil de tiers a un ensemble de méthodes à partir de laquelle je peux obtenir les valeurs.J'ai besoin d'obtenir les valeurs de chacune des méthodes ou autrement valeur des membres non publics – Prasad

+0

Vous pouvez implémenter l'interface IXmlSerializable sur une classe d'adaptateur (voir Modifier). –

1

Si JSON répond à vos besoins, vous pouvez essayer JsonExSerializer car il n'a pas besoin d'attributs pour décorer les objets ciblés.

0

Vous pouvez utiliser la réflexion pour trouver tous les membres qui vous intéressent, par ex. propriétés publiques et/ou des champs privés et ensuite construire un document XML que vous allez.

De cette façon, le code resterait générique et personnalisé comme vous le souhaitez. :)

Cependant, n'oubliez pas que la réflexion peut être un processus très lent à l'exécution. :(

Questions connexes