我有一个看起来像的模型:
[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; }
}
然后我尝试使用 EnyimMemcached 将其缓存在 memcached 中。
不会引发异常,但不会存储该项目。
我已经将此归结为我的 TemplatePageModel 类不可序列化的事实。
我用这个小片段测试了这个:
MemoryStream mem = new MemoryStream();
BinaryFormatter b = new BinaryFormatter();
try
{
b.Serialize(mem, result);
}
catch (Exception ex)
{
//EXCEPTION HERE
}
它抱怨我的 IEnumerable 属性。
实际的错误信息是:
键入'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]]' 在程序集 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 未标记为可序列化。
我怎样才能绕过这个?
我希望不必先序列化为 json,并在可能的情况下反序列化....