次のようなモデルがあります。
[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にシリアル化する必要がなく、可能であれば途中で逆シリアル化する必要がないことを望んでいました....