ASP.NET: лучший способ определить тип объекта, сериализованного в XML - PullRequest
0 голосов
/ 02 января 2011

В моей базе данных SQL Server есть таблица, в которой хранится информация об аудите определенных действий, выполняемых пользователем в моей системе.Такие вещи, как, кто выполнил действие, когда оно было выполнено, и какое действие - это все части информации, которые могут легко охватывать несколько действий.Но в зависимости от выполненного действия, я могу собирать другую информацию, относящуюся к конкретному действию.Чтобы справиться с этим, я решил добавить столбец «Метаданные XML» в таблицу, которая содержит сериализованный XML различных созданных мной объектов метаданных.Я создал объект метаданных для каждого из действий, для которых меня интересует дополнительное отслеживание.Таким образом, каждый объект отвечает за отслеживание конкретной дополнительной информации (метаданных) для своего действия.Объекты сериализуются и записываются в мой новый столбец.

У меня есть SystemAction объекты, которые я использую для хранения информации из этой таблицы, и я добавил строковое поле, которое содержит строку XML из БД.Проблема в том, что когда я читаю этот XML обратно из объектов SystemAction, я пытаюсь найти способ его общего преобразования обратно в его правильный объект метаданных.Каждый объект метаданных будет иметь разные поля, и у каждого объекта есть собственный статический метод, который принимает строку XML и пытается вернуть тип объекта метаданных.Так что я мог бы сказать:

SomeActionMetadata mdObj = SomeActionMetadata.BuildFromXML(xmlStringFromDB);

Но я действительно не знаю, как сказать: «Вот какой-то XML, который можно преобразовать в любое количество различных объектов.верните мне правильный объект. "

Учитывая мою текущую реализацию, я всегда мог просто назначить уникальный идентификатор каждому объекту метаданных, который хранится как поле в каждом объекте, а затем использовать оператор case для включения этогоИдентифицируйте и используйте статический метод построения соответствующего класса для создания правильного объекта.Но я надеялся на что-то более автоматическое, чем это.Что если у меня есть список объектов SystemAction и я просто хочу просмотреть их и создать правильный тип объекта метаданных?

Я надеялся, что кто-то мог столкнуться с чем-то похожим на это раньше или мог бы указать мне настатья или пост, которые могут мне помочь.Большое спасибо.

1 Ответ

1 голос
/ 11 января 2011

Как указал Субхаш Дайк в комментариях ниже, есть аналогичный вопрос SO здесь , который смог указать мне правильное направление.

...