2009-01-06 10 views
1

I ont un type générique:XmlSerializer, sgen.exe et génériques

public class Packet<T> where T : IContent 
{ 
    private int id; 
    public int Id { get { return this.id; } } 

    private T content; 
    public T Content { get { return this.content; } } 
} 

Je veux désérialisation/sérialisation instances de ce type de/vers XML. IContent est défini comme: member

public interface IContent 
{ 
    XmlSerializer Serializer{get;} 
} 

Fondamentalement, je voudrais le Packet d'utiliser le sérialiseur fourni par son contenu pour sérialiser et désérialiser le contenu. Ce sérialiseur est en fait une instance d'un sérialiseur xml pré-compilé généré par sgen.exe.

Est-il possible sans faire Packet<T> en implémentant IXmlSerializable?

Répondre

1

Oui, vous pouvez implémenter une classe personnalisée directement avec IXmlSerializable.
Pour plus d'informations, voir l'article this.

+0

Mon point est que je voudrais éviter la sérialisation personnalisée en utilisant IXmlSerializable. (Voir la dernière ligne de question.) –

0

Si vous utilisez le type générique, il n'est pas en mesure de générer un XmlSerializer pré-rempli.