Ich habe ein Modell, das so aussieht:
[Serializable]
public class TemplatePageModel
{
public PageModel Page { get; set; }
public SidebarModel Sidebar { get; set; }
}
[Serializable]
public class PageModel
{
public IEnumerable<SectionModel> Section { get; set; }
}
[Serializable]
public class SidebarModel
{
public IEnumerable<ControlModel> Control { get; set; }
}
[Serializable]
public class SectionModel
{
public string Order { get; set; }
public string Editable { get; set; }
public string Column { get; set; }
public string Text { get; set; }
}
Ich versuche dann, dies in memcached mit EnyimMemcached zwischenzuspeichern.
Es werden keine Ausnahmen ausgelöst, aber das Objekt wird nicht gespeichert.
Ich habe dies auf die Tatsache zurückgeführt, dass meine TemplatePageModel-Klasse nicht serialisierbar ist.
Ich habe dies mit diesem kleinen Schnipsel getestet:
MemoryStream mem = new MemoryStream();
BinaryFormatter b = new BinaryFormatter();
try
{
b.Serialize(mem, result);
}
catch (Exception ex)
{
//EXCEPTION HERE
}
Es beschwert sich über meine IEnumerable-Eigenschaften.
Die eigentliche Fehlermeldung lautet:
Typ System.Linq.Enumerable+WhereSelectEnumerableIterator`2[[System.Xml.Linq.XElement, System.Xml.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[Desktop.Service.Model.ControlModel, Dekstop.Service, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' in Assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' ist nicht als serialisierbar.
Wie kann ich das umgehen?
Ich hatte gehofft, nicht zu müssen, serialisieren in Json erste, und de-serialisieren auf dem Weg aus, wenn möglich....