Я пытаюсь выполнить следующий сценарий инъекции зависимостей с использованием Autofac.Откладывание регистрации собственности с использованием Autofac
Предположим, что у меня есть три класса: A, B и P. Класс A содержит свойство типа P, а также имеет ссылку на B, который необходимо вводить во время выполнения.
class A
{
private B _b;
public P Prop { get; set; }
InitializeProp()
{ ... }
}
В то же время, класс B зависит от экземпляра Р:
class B
{
private P _p;
}
Теперь самая важная деталь: мне нужно как-то привнести в B экземпляр P. Однако, что instance должен быть Prop из класса A, который инициализируется только после вызова InitializeProp() в A. Предположим, что InitializeProp() можно назвать позже в течение срока жизни объекта, чем конструктор A.
Этот сценарий возможен с помощью Autofac?
я пытался делать что-то вроде этого, но я получаю круговое эталонное исключение, по-видимому, когда В дальнейшем решен на:
containerBuilder.RegisterType<A>().SingleInstance();
containerBuilder.Register<Func<P>>(c =>
{
var a = c.Resolve<A>();
return() => a.Prop;
});
В идеале я 'd проектируйте мои классы, как вы предлагаете, P, введенные через конструктор в A и B.Однако мой реальный сценарий сдерживается другими зависимостями и, короче говоря, нет способа обойти наличие свойства P в классе A, которое инициализируется в определенной точке времени жизни A. A реализует интерфейс, в котором объявляется свойство P. –