2010-02-25 10 views
5

ja szeregowania klasę i otrzymuję następujący wyjątek:XMLSERIALIZE Wyjątek

musi wdrożyć domyślny akcesor na System.Configuration.SettingsPropertyCollection ponieważ dziedziczy z kolekcji ICollection.

gdy wykonywany jest następujący wiersz:

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

Każda pomoc?

public class CustomConfiguration : ConfigurationObjectBase 
{ 

     public CustomConfiguration() { //DO NOTHING. } 

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

} 

ConfigurationObjectBase pochodzi z System.configuration.ApplicationSettingsBase.

+1

Czy możesz pokazać dowolną wersję swojej klasy "CustomConfiguration" (w szczególności dziedziczenie itp.)? –

+0

publiczna klasa Konfiguracja niestandardowa: ConfigurationObjectBase { publiczna konfiguracja niestandardowa() { // NIE WYKONAĆ. } ///

/// Wersja /// [User] publicznego uint Wersja { dostać { powrotny ((uint) (ten [ "Version"])); } zestaw { to ["Wersja"] = wartość; } } } ConfigurationObjectBase pochodzi z System.configuration.ApplicationSettingsBase – siva

+0

Czy mogę zapytać, dlaczego próbujesz serializować mimo to? Wydaje się nieco dziwne. –

Odpowiedz

4

"Domyślny akcesor" to specjalna właściwość, która zwraca obiekt kolekcji na podstawie jego indeksu . na przykład:

[Serializable()] 
public class IntList : ICollection { 

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

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

Dlatego nie można go zastosować w istniejącej klasie strony trzeciej. Korzystanie z serializacji XML dla ApplicationSettings jest bardzo złym pomysłem, użyj metod Save(), Reload() i Reset() lub użyj własnych nie pochodzących z klas CustomConfiguration ApplicationSettingsBase.

0

trzeba mieć domyślnego konstruktora, czyli taki, który nie ma żadnych parametrów, jak tak ....

class foo 
{ 
    public foo() {} 
} 

jeśli klasa próbujesz serializacji nie ma jednego, XMLSerializer wyrzuca ten wyjątek. Jeśli próbujesz serializować wbudowaną klasę, będziesz musiał wyprowadzić własną lub utworzyć klasę otoki.

+0

Zauważ, że typem jest "System.Configuration.SettingsPropertyCollection' ... nie jest to łatwe do edycji. –

+0

Dodawanie domyślnego konstruktora również nie działało. – siva

+0

Zgłasza ten sam wyjątek – siva

Powiązane problemy