Я не уверен, что я поступаю правильно. У меня есть набор приложений, которые имеют различные типы вывода (пользовательские типы).
Например, у меня может быть тип с именем Widget:
Class Widget
Public name as String
End Class
В течение всего процесса, когда пользователь испытывает определенное состояние, приложение будет извлекать тот выходной экземпляр виджета, который получил пользователь, сериализовать его и регистрировать в базе данных, отмечая имя типа.
Теперь у меня есть другие приложения, которые делают что-то подобное, но вместо того, чтобы иметь дело с Widget, это может быть какой-то совершенно случайный другой тип с другими атрибутами, но я снова сериализую экземпляр, записываю его в базу данных и отмечаю имя типа. У меня есть, может быть, полдюжины разных типов, и я не ожидаю, что в будущем будет слишком много других.
После того, как все это сказано и сделано, у меня есть интерфейс администратора, который просматривает эти журналы и имеет возможность для пользователя просматривать содержимое этих данных, которые были зарегистрированы. Приложение Admin имеет ссылку на все задействованные типы, и с некоторой базовой логикой регистра переключателя, зависящей от имени типа, преобразует его в свои исходные типы и передает его некоторым обработчикам, которые имеют базовую логику отображения, чтобы выплевывать данные возвращаются в читаемом формате (один обработчик дисплея для каждого типа)
СЕЙЧАС ... все это хорошо и хорошо ...
Пока однажды моя модель не изменилась. Класс Widget теперь устарел как атрибут name и добавил множество других атрибутов. Конечно, я получу несоответствия типов на стороне администратора, когда попытаюсь восстановить эти данные.
Мне было интересно, есть ли какой-нибудь способ, во время выполнения, возможно, я мог бы отразить в своем коде и получить моментальный снимок определения типа в тот момент, сериализовать его и сохранить вместе с данными, чтобы я мог как-то использовать это, чтобы восстановить его в будущем?