Повторно введите зависимости недавно десериализованного объекта - PullRequest
9 голосов
/ 20 апреля 2010

Если программа буквально просто десериализовала объект (на самом деле не имеет значения, как, а просто скажем, что был использован BinaryFormatter).

Что такое хороший дизайн для повторного внедрения зависимостей этого объекта?

Есть ли общий шаблон для этого?

Полагаю, мне нужно было бы обернуть метод Deserialize (), чтобы он работал как фабрика внутри контейнера.

Спасибо!

Ответы [ 3 ]

11 голосов
/ 20 апреля 2010

Не следует сериализовать объекты с зависимостями, которые сами не могут быть сериализованы.

Вместо этого разделите его на два класса: извлеките сериализуемые части в отдельный класс .

После десериализации вы можете связать результирующий объект с экземпляром исходного класса (класса с зависимостями).

1 голос
/ 20 апреля 2010

Я бы использовал атрибут OnDeserialized , чтобы указать метод, который будет выполнять повторную инъекцию.

0 голосов
/ 20 апреля 2010

Unity имеет концепцию " BuildUp ", где вы можете попросить его выполнить зависимости существующего объекта. Я не знаю, есть ли у autofac (который я предполагаю, что вы используете из тегов) эквивалент.

...