Я могу видеть, как я могу создавать экземпляры объектов классов с помощью autofac, а затем передавать их в db4o для хранения. Когда мне пора извлечь экземпляры объектов из db4o, как мне зарегистрировать объекты с помощью autofac?
Первоначально я планировал использовать инструмент MSBuild для db4o для реализации прозрачной активации / персистентности, но, похоже, мне, возможно, придется вручную реализовать интерфейс IActivatable для всех моих объектов Model, чтобы я мог добавить дополнительный код в IActivatable::Bind()
зарегистрировать this
указатели по мере их активации.
Что еще хуже, я предвижу, что реализация IActivatable::Bind()
будет иметь доступ к Singleton текущей области действия Autofac для выполнения регистрации. Очевидно, я не могу передать текущую область действия экземпляру объекта, который активирует db4o. Как бы плохо ни обходить эту сферу, я могу себе представить стоны людей, которые думают о том, чтобы прикрепить сферу текущей жизни в публичном синглтоне.
Альтернативой может быть реализация обработчиков типов в db4o и перехват экземпляра объекта в этой точке, но это похоже на отмену любых преимуществ использования db4o для хранения объектов.
Или я просто сошел с ума от идеи использовать автофак для создания экземпляров всех объектов? (Например, у меня есть молоток, и все выглядело как гвоздь.) Должны ли объекты Model просто создаваться простым старым «новым» и какой-либо магией, которую использует db4o? Другими словами, используйте autofac только с моими объектами View, ViewModel и Controller.