Serialisierung Fehler: es wurde ein Fehler reflektierendes
Ich habe zwei Klassen: ServiceTrigger
und ServiceCalendar
.
Wenn ich serialisieren model.Triggers
ich bin immer eine Ausnahme, die sagen:
Nicht serialisieren Element 'yyy.ServiceTrigger.ServiceDaysOfWeek' des Typs
'System.Sammlungen.Generisches.IEnumerable`1[[JJJJ.ServiceCalendar, yyy.ChangeAD, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]',
siehe innere Ausnahme für mehr details."}
Erstellt habe ich eine IEnumerable<ServiceTrigger>
:
IEnumerable<ServiceTrigger> serviceTriggers = model.Triggers;
XDocument xDoc = SerializationUtil.Serialize(model.Triggers);
Ersten Klasse ist wie folgt:
[DataContract]
public class ServiceTrigger
{
[DataMember(Name = "triggerID")]
public long TriggerID { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "dateStart")]
public string DateStart { get; set; }
[DataMember(Name = "code")]
public string Code { get; set; }
[DataMember(Name = "isActive")]
public bool IsActive { get; set; }
[DataMember(Name = "dateFrom")]
public string DateFrom { get; set; }
[DataMember(Name = "dateTo")]
public string DateTo { get; set; }
[DataMember(Name = "currentState")]
public string CurrentState { get; set; }
[DataMember(Name = "daysOfWeek")]
public IEnumerable<ServiceCalendar> ServiceDaysOfWeek { get; set; }
[DataMember(Name = "monthsOfYear")]
public IEnumerable<ServiceCalendar> MonthsOfYear { get; set; }
[DataMember(Name = "daysOfMonth")]
public IEnumerable<ServiceCalendar> DaysOfMonth { get; set; }
}
Zweiten Klasse ist wie folgt:
[DataContract]
public class Calendar
{
[DataMember(Name = "id")]
public int Id { get; set; }
[DataMember(Name = "name")]
public string Name { get; set; }
[DataMember(Name = "code")]
public string Code { get; set; }
[DataMember(Name = "isActive")]
public bool IsActive { get; set; }
)
Meine Serialisierung der Klasse ist wie folgt:
public static class SerializationUtil
{
public static T Deserialize<T>(XDocument doc)
{
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (var reader = doc.Root.CreateReader())
{
return (T)xmlSerializer.Deserialize(reader);
}
}
public static XDocument Serialize(this object obj)
{
XmlSerializer xmlSerializer = new XmlSerializer(obj.GetType());
XDocument doc = new XDocument();
using (var writer = doc.CreateWriter())
{
xmlSerializer.Serialize(writer, obj);
}
return doc;
}
}
Sie benötigen, um fix die Formatierung Ihres Beitrags. Kommentare wie "Meine Serialisierung Klasse ist wie diese" sollte nicht in einen code-block, macht es schwer zu Lesen. Wo genau sind Sie immer die Ausnahme? Können Sie bitte die VOLLSTÄNDIGE Ausnahme?
Nicht serialisieren Element 'yyy.ServiceTrigger.ServiceDaysOfWeek' des Typs 'System.Sammlungen.Generisches.IEnumerable`1[[JJJJ.ServiceCalendar, yyy.ChangeAD, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", siehe innere Ausnahme für mehr details."}
Nicht serialisieren Mitglied yyy.ServiceTrigger.ServiceDaysOfWeek des Typs System.Sammlungen.Generisches.IEnumerable`1[yyy.ServiceCalendar, yyy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], weil es ist eine Schnittstelle."
mögliche Duplikate von: stackoverflow.com/questions/1333864/...
Die exception sagt dir, "Siehe innere Ausnahme", so dass Sie brauchen, um sich auf die innere Ausnahme. Bitte fügen Sie die Nachricht von der inneren Ausnahme zu der Frage, wie gut.
Nicht serialisieren Element 'yyy.ServiceTrigger.ServiceDaysOfWeek' des Typs 'System.Sammlungen.Generisches.IEnumerable`1[[JJJJ.ServiceCalendar, yyy.ChangeAD, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]", siehe innere Ausnahme für mehr details."}
Nicht serialisieren Mitglied yyy.ServiceTrigger.ServiceDaysOfWeek des Typs System.Sammlungen.Generisches.IEnumerable`1[yyy.ServiceCalendar, yyy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]], weil es ist eine Schnittstelle."
mögliche Duplikate von: stackoverflow.com/questions/1333864/...
Die exception sagt dir, "Siehe innere Ausnahme", so dass Sie brauchen, um sich auf die innere Ausnahme. Bitte fügen Sie die Nachricht von der inneren Ausnahme zu der Frage, wie gut.
InformationsquelleAutor user2264703 | 2013-04-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kann man nicht serialisieren Schnittstellen. Sie verwenden müssen die tatsächliche Objekte, zum Beispiel
List<ServiceCalendar>
.Beachten Sie auch, dass
ServiceCalendar
muss einen default-Konstruktor ohne, um Parameter fürXmlSerializer
um es zu schaffen, wenn Deserialisieren. Dies ist nur dann wichtig, wenn Sie hinzufügen, einen benutzerdefinierten Konstruktor mit Parametern. Wenn Sie keinen Konstruktor an alle, die default-Konstruktor gibt es bereits.Beispiel:
Sonst wird eine exception ähnlich zu
InformationsquelleAutor Default