Просто идея, вы можете использовать MEF для создания структуры плагина для вашего пользовательского контроля. Вы хотите создать пользовательский элемент управления на лету, но обработчик событий все еще должен быть жестко задан где-то еще в вашем проекте; со структурой плагина вы можете просто собрать плагин и использовать его повторно; события могут быть обработаны командой что-то. Может быть, дать сценарий, и мы можем выяснить более подробно.
Кроме того, ISerializable предоставляет способ настраиваемой двоичной сериализации для поля, а не для методов или событий. Вот связанный вопрос:
Какой смысл интерфейса ISerializable?
; с другой стороны, вы все равно можете попробовать какой-то шаблон, например, как веб-элемент управления сохраняет свое состояние просмотра; например
два виртуальных метода:
public virtual byte[] SaveState(); // it saves the states for your custom control
public virtual void LoadState(byte[] state) // it restore your state back to the control.
Пользовательский код должен выглядеть так:
byte[] state = controlA.SaveState(); // this method saves its own state.
YourControl controlB = new YourControl();
controlB.LoadState(state); // this method load the save state from A to B itself.
Для события у каждого события есть имя обработчика, вы также можете сериализовать его имя обработчика в состояние и найти его по сохраненному имени из его контейнера имен. У меня нет опыта, чтобы сохранить метод.
Если вы все еще хотите сохранить и загрузить состояние, включая поля, события и метод, возможно, я думаю, что сериализация - это не то, что вам нужно.