Как обрабатывать циклические ссылки с помощью Autofac 2.4.5?

На вики-странице autofac о Циркулярных ссылках указано использовать:

cb.Register().OnActivated(ActivatedHandler.InjectUnsetProperties);

Но похоже, что ActivatedHandler больше не существует в 2.4.5. Покопавшись в источнике, я нашел реализацию этого класса, поэтому вместо этого я поместил реализацию метода в OnActivated. К сожалению, это все еще не работает.

Я собрал здесь минимальное воспроизведение, которое выглядит так, как было на странице Wiki.

class M
{
    public VM VM { get; set; }

    public M()
    {
    }
}

class VM
{
    public VM(M m)
    {
    }
}

[Fact]
void CanResolveCircular()
{
    ContainerBuilder builder = new ContainerBuilder();

    builder.RegisterType();
    builder.RegisterType().OnActivated(e => e.Context.InjectUnsetProperties(e.Instance));

    using (var container = builder.Build())
    {
        var m = container.Resolve();
        Assert.NotNull(m);
    }
}

Этот код по-прежнему генерирует исключение переполнения стека при попытке разрешения. Что мне не хватает? Как правильно заставить Autofac обрабатывать циклические зависимости?

5
задан Ants 31 May 2011 в 10:27
поделиться