Fis*_*ter 9 c# serialization delegates function-composition
这很好用:
Func<string, string> func1 = s => s + "func";
ViewState["function"] = func1;
Run Code Online (Sandbox Code Playgroud)
但是,这不是:
Func<string, string> func1 = s => s + "func";
Func<string, string> func2 = s => func1(s);
ViewState["function"] = func2;
Run Code Online (Sandbox Code Playgroud)
它会抛出运行时序列化异常: Type 'MyProjectName._Default+<>c__DisplayClass3' in Assembly 'MyProjectName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
现在,我可以解决这个问题,但是我想了解为什么会发生这种情况,以便将来除了在序列化之前编写函数之外我别无选择,我将有一个解决方案.
Jar*_*Par 10
第二种情况发生的是涉及到一个闭包.func1
内部的使用func2
创建了一个闭包来捕获lambda表达式之间的共享状态.闭包不可序列化.当您尝试序列化func时,它会尝试序列化目标对象(即闭包)并获得异常.
归档时间: |
|
查看次数: |
1661 次 |
最近记录: |