Die XML-Serialisierung Fehler - Es wurde ein Fehler beim reflektieren geben
Ich versuche zu serialisieren, die einige benutzerdefinierte Einstellungen aus der Konfigurationsdatei.
Hier sind meine Einstellungen:
<FavouriteTools>
<favouriteTool PluginPlaceHolder="FavoriteTool1" PlugInName="Brightness"
PlugInType="2D" PlugInAssemblyName="Micro.DigiMic.Plugins.AreaBasedOnBrightness.AreaBasedOnBrightnessPlugin"
GUID="0000c03a-b891-4ebd-87d7-5fbc19073a1a" />
<favouriteTool PluginPlaceHolder="FavoriteTool2" PlugInName="CircleArea"
PlugInType="2D" PlugInAssemblyName="Micro.DigiMic.Plugins.CircleAreaPlugin.CircleAreaPlugin"
GUID="0000c06a-b891-4ebd-87d7-5fbc19073a1a" />
<favouriteTool PluginPlaceHolder="FavoriteTool3" PlugInName="Contour Area"
PlugInType="2D" PlugInAssemblyName="Micro.DigiMic.Plugins.ContourAreaPlugin.ContourAreaPlugin"
GUID="0000c11a-b891-4ebd-87d7-5fbc19073a1a" />
Aber ich bekomme Fehler bei der Serialisierung von Ihnen. Hier sind meine Klassen.
//FavouriteTools - Root Node
[Serializable]
[XmlType("FavoriteTools")]
[ConfigurationCollection(typeof(FavouriteTool), AddItemName = "favouriteTool", CollectionType = ConfigurationElementCollectionType.BasicMap)]
public class FavouriteToolsCollection
: ConfigurationElementCollection
{
//Few plublic methods here
}
//favouriteTool - Child node
[Serializable]
[XmlType("favouriteTool")]
public class FavouriteTool : ConfigurationElement
{
///<summary>
///Gets or sets value of Plugin PlaceHolder.
///</summary>
///<value>Text Color.</value>
[ConfigurationProperty("PluginPlaceHolder", IsRequired = false)]
public string PlugPlaceHolder
{
get { return (string)base["PluginPlaceHolder"]; }
set { base["PluginPlaceHolder"] = value; }
}
//Few more properties like above
}
I am trying to serialize below class, but gets exception on below like
XmlSerializer xmlinf = new XmlSerializer(data.GetType());
`data` is `ExportUser`
[Serializable]
public class ExportUser
{
public bool IsMetric { get; set; }
[XmlArray("FavoriteTools")]
[XmlArrayItem("favouriteTool")]
public FavouriteToolsCollection FavoriteTools { get; set; }
}
Bekomme ich diese Fehler - There was an error reflecting type 'ExportUser'
und in der inneren Ausnahme der Fehler sagt - There was an error reflecting type 'FavoriteTools'
.
Ist es etwas, was fehlt?
Update:
Nachdem er die innere Ausnahme, die den Fehler
{"You must implement a default accessor on System.Configuration.ConfigurationLockCollection because it inherits from ICollection."}
There was an error reflecting type 'Zeiss.Micro.DigiMic.Application.FavouriteTool'.
Aber ich habe eine Standard-accessor in FavouriteToolsCollection
Klasse:
public FavouriteTool this[int index]
{
get
{
return (FavouriteTool)BaseGet(index);
}
set
{
if (this.BaseGet(index) != null)
{
this.BaseRemoveAt(index);
}
this.BaseAdd(index, value);
}
}
Was fehlt?
- Was war die innere Ausnahme von der Ausnahme? (etc) - es gibt tatsächlich wirklich ausführliche Nachrichten, wenn Sie halten bohren. Btw - hat es eigentlich sagen
...reflecting type 'FavoriteTools'
? weil im code: das ist nicht eine Art For non-array types, you may use the following attributes: XmlAttribute, XmlText, XmlElement, or XmlAnyElement.
- Hier ist die genaue Nachricht mit innerExceptionThere was an error reflecting type 'FavoriteTools'
Du musst angemeldet sein, um einen Kommentar abzugeben.
OK. Ich habe gerade stieß dieses. Und löste es mit einem wrapper-Objekt.
Was ich Tat, war zu erstellen, ein einfaches wrapper-Objekt für das, was ich möchte
serialisieren. Ich meinem Fall ist es ein ConfigurationCollection. Ich serialisieren, und erstellen Sie ein paar Adapter, um die Karte aus dem serializable-Objekt, um das eigentliche Objekt und Umgekehrt.