Десериализовать объект сеанса без ссылки на тип? - PullRequest
3 голосов
/ 17 марта 2009

У меня есть POCO (обычный старый объект clr), сохраненный в сеансе, и я хотел бы иметь возможность ссылаться на свойства этого объекта из другого процесса (B). Я не хочу, чтобы автономный процесс (B) требовал ссылки на dll, в которой определен класс poco. Можно ли преобразовать сохраненный объект (в сеансе) во что-то читаемое (например, xml) без ссылки на класс объекта?

Ответы [ 4 ]

1 голос
/ 17 марта 2009

Вам потребуется создать собственный код для сериализации и / или десериализации объекта.

Без ссылки на сборку .NET не имеет необходимых метаданных, чтобы выполнить работу за вас.

Вы можете просто добавить атрибут в сгенерированный XML, чтобы указать тип объекта.

<Object Type="1">
    <Property1>Value</Property1>
</Object>

Конечно, код назначения должен знать, что делать с этим атрибутом типа, но вам не нужно ссылаться на фактическую сборку .NET.

1 голос
/ 17 марта 2009

вам не нужна сборка для получения метаданных объекта, может быть, вы можете избежать ссылки на dll и использовать отражение.

0 голосов
/ 17 марта 2009

Забудьте о том, как его сериализовать - как вы собираетесь извлекать данные в другом процессе. Что это за другой процесс? Если это не другая страница ASP.NET, то она не будет иметь доступа к состоянию сеанса!

0 голосов
/ 17 марта 2009

Если вам просто нужен снимок объекта, то да, вы можете просто сериализовать его (или просто интересующие вас свойства) и затем передать сериализованные данные в процесс B. Класс XmlSerializer, вероятно, предоставляет самый простой способ для сериализации объекта, а затем процесс B может читать данные, используя любой стандартный анализатор XML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...