Это прекрасно работает:
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.
Теперь яв этот раз можно обойти это, но я бы хотел понять, почему это происходит, поэтому, если в будущем у меня не будет другого выбора, кроме как создавать функции перед сериализацией, у меня будет решение.