Очевидно, что вы не можете сериализовать тип, который наследует несериализуемый тип, даже если вы не хотите сериализовать несериализуемые свойства вашего производного типа.
Я думаю, что это должно быть классифицировано как ошибка, так как основная задача интерфейсов, таких как ISerializable, заключается в том, чтобы точно указать, что именно вы вводите для сериализации, вручную реализуя метод, который обрабатывает сериализацию.
В любом случае решение моего конкретного сценария состояло в том, чтобы вообще не беспокоить сериализацию и просто сохранить интересующую информацию в viewstate, которая затем использовалась бы в обратных передачах для восстановления элементов управления в том же состоянии, готовом для обратной передачи на основе страниц. события, которые должны произойти.
Жаль, что это лучше не документировано где-то, потому что, хотя Microsoft действительно документирует методы SaveViewState и LoadViewState жизненного цикла страницы, они очень расплывчаты относительно того, как эти события могут быть использованы, я предполагаю, что они надеются, что кто-то в сообществе может привести пример .
Я бы опубликовал свой код, но это неприятный хак, чтобы все заработало, поэтому я не думаю, что это должен быть основной код MSDN.
Хорошо для небольшого внутреннего приложения:)