AutoFac : Что делает PropertyWiringFlags.AllowCircularDependencies?

У меня есть часть кода с зависимостями, которые выглядят следующим образом:

public class MyPage : Page //ASPX WebForms page
{
    public IPersonBl PersonBl { get; set; }

}

public class PersonBl : IPersonBl
{

    public PersonBl(ISomeMagicBl magicBl){...}

}

public class SomeMagicBl : ISomeMagicBl
{
    public IPersonBl PersonBl { get; set; }

    public SomeMagicBl(/*Other dependencies*/) {...}
}

Конфигурация моего модуля выглядит следующим образом

...
builder.RegisterAssemblyTypes(ThisAssembly).Where(t => t.Name.EndsWith("BL")).AsImplementedInterfaces().PropertiesAutowired(PropertyWiringFlags.AllowCircularDependencies).InstancePerLifetimeScope();
...

Как можно видеть, у меня есть циклических зависимостей в моих классах, которые я смог разрешить с помощью .. PropertiesAutowired (PropertyWiringFlags.AllowCircularDependencies) .. .

Мой вопрос : Что именно этот флаг делает за кулисами для решения этих циклических зависимостей ??

5
задан Juri 16 November 2011 в 13:31
поделиться