Entwickler-Ecke

IO, XML und Registry - Fehler bei Serialisierung einer Klasse


MaPEC - Fr 04.01.13 16:39
Titel: Fehler bei Serialisierung einer Klasse
Hallo,
ich möchte eine Klasse serialisieren die wie folgt aufgebaut ist:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
public class ConfigSet
{
  public string configCategory;
  public string configName;
  public string configValue;

  public string Category
  {
    get { return configCategory; }
    set { configCategory = value; }
  }

  public string Name
  {
    get { return configName; }
    set { configName = value; }
  }

  public string Value
  {
    get { return configValue; }
    set { configValue = value; }
  }
}


Die Serialisierung realisiere ich wie folgt:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
try
{
  XmlWriterSettings xmlWriterSettings = new XmlWriterSettings();
  xmlWriterSettings.Indent = true;
  FileStream fs = new FileStream(fileName, FileMode.CreateNew);
  Type t = typeof(List<ConfigSet>);
  XmlSerializer serializer = new XmlSerializer(t.GetType());
  XmlWriter xmlWriter = XmlWriter.Create(fs, xmlWriterSettings);
  serializer.Serialize(xmlWriter, configSetList);  
}
catch (Exception E)
{
  MessageBox.Show(E.Message);
}


Beim Anlegen der Klasse "serializer" bekomme ich immer die folgende Fehlermeldung:
"Auf 'System.RuntimeType' kann aufgrund der Sicherheitsebene nicht zugegriffen werden. Nur öffentliche Typen können verarbeitet werden."

Weiss evtl. jemand was ich falsch mache?


Th69 - Fr 04.01.13 16:47

Hallo MaPEC und :welcome:

du verwendest mit t.GetType() den Typen des Typen ;-)
Da t ja schon der Typ ist, einfach

C#-Quelltext
1:
2:
Type t = typeof(List<ConfigSet>);
XmlSerializer serializer = new XmlSerializer(t);


MaPEC - Fr 04.01.13 17:04

Hallo Th69,

ah soo! Vielen Dank für die schnelle Antwort und den Tip.
Hab es geändert und klappt! Klasse!!