bonjour
(qwerty, dsl pour les accents)
je sais que la question a ete moulte fois pose mais je n'ai toujours pas trouve la solution a mon pb

je suis sous visual studio 2003 avec le dotnet 1.1 (pas d'evolution possible)
et je cherche a serialiser une classe qui herite de collectionBase


La classe que je cherche a serialiser (listProcessedData) contient des element
processedData ci dessous

public __gc class processedData{
public:
unsigned long Value;
unsigned long Bit_type;
};

voici la classe qui herite de CollectionBase

public __gc class listProcessedData : System::Collections::CollectionBase{
listProcessedData(void);
__property System::Object * get_Item(int index);
__property void set_Item(int index, System::Object * value);
__property int get_Size(void);
System::Object * Get(int index);
void Set(int index, System::Object * value);
void Add(System::Object * value);
void Insert(int index, System::Object * value);
};



voici les lignes de codes pour la serialisation

listProcessedData * list_processedData = new listProcessedData();
//remplissage de la liste
..
..
..

//serialisation xml

System::IO::Stream * myStream = System::IO::File::Open(mySaveDialog->get_FileName(), System::IO::FileMode::Create);

System::Xml::Serialization::XmlSerializer * serializator = new System::Xml::Serialization::XmlSerializer( list_processedData->GetType());

serializator->Serialize(myStream, list_processedData);


cela compile parfaitement, mais cela genere une exception lors de la ligne
"serializator->Serialize(myStream, list_processedData);"

"System.InvalidOperationException: Vous devez implémenter un accesseur par défaut sur ContactlessSpyViewer.listProcessedData, car il hérite de ICollection. blablablabla "


suite a mes recherches

"the XmlSerializer gives special treatment to classes that implement IEnumerable or ICollection. A class that implements IEnumerable must implement a public Add method that takes a single parameter. The Add method's parameter must be of the same type as is returned from the Current property on the value returned from GetEnumerator, or one of that type's bases. A class that implements ICollection (such as CollectionBase) in addition to IEnumerable must have a public Item indexed property (indexer in C#) that takes an integer, and it must have a public Count property of type integer. The parameter to the Add method must be the same type as is returned from the Item property, or one of that type's bases. For classes implementing ICollection, values to be serialized will be retrieved from the indexed Item property, not by calling GetEnumerator."

bah la methode Add est bien presente quoique je doute qu'elle soit utilisee pour la serialisation, mais plutot pour la deserialisation


cdt
ploups