これはうまくいきます:
Func<string, string> func1 = s => s + "func";
ViewState["function"] = func1;
ただし、これは次のことを行いません。
Func<string, string> func1 = s => s + "func";
Func<string, string> func2 = s => func1(s);
ViewState["function"] = func2;
実行時シリアライゼーション例外をスローします。Type 'MyProjectName._Default+<>c__DisplayClass3' in Assembly 'MyProjectName, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
今回はこれを回避できますが、なぜこれが起こっているのかを理解したいので、将来、シリアル化の前に関数を作成するしかない場合は、解決策があります。