Исключение XMLSerialize - PullRequest
       7

Исключение XMLSerialize

5 голосов
/ 25 февраля 2010

Я сериализую класс и получаю следующее исключение:

Необходимо реализовать метод доступа по умолчанию в System.Configuration.SettingsPropertyCollection, поскольку он наследуется от ICollection.

при выполнении следующей строки:

XmlSerializer xs = new XmlSerializer(typeof(CustomConfiguration));

Любая помощь?

public class CustomConfiguration : ConfigurationObjectBase 
{ 

         public CustomConfiguration () { //DO NOTHING. } 

         [User] 
         public uint Version 
         { get { return ((uint)(this["Version"])); } 
           set { this["Version"] = value; } 
}

} 

ConfigurationObjectBase получено из System.configuration.ApplicationSettingsBase .

Ответы [ 2 ]

4 голосов
/ 25 февраля 2010

«метод доступа по умолчанию» - это специальное свойство, которое возвращает объект коллекции на основе его индекса.например:

[Serializable()]
public class IntList : ICollection {

    // Default Accessor Implementation
    public int this[int index] {
        get {

            return 0;
        }
        set { /* Do Nothing */ }
    }
}

Поэтому невозможно реализовать это в существующем стороннем классе.Использование сериализации xml для ApplicationSettings - очень плохая идея, используйте методы Save (), Reload () и Reset () или используйте свой собственный, не производный от классов ApplicationSettingsBase CustomConfiguration.

0 голосов
/ 25 февраля 2010

у вас должен быть конструктор по умолчанию, то есть тот, который не принимает никаких параметров, например ...

class foo
{
    public foo() {}
}

если класс, который вы пытаетесь сериализовать, не имеет его, XMLSerializer выдает это исключение. Если вы пытаетесь сериализовать встроенный класс, вам придется извлечь собственный или создать класс-оболочку.

...