La página wiki autofac sobre Circular References dice que use:¿Cómo manejar referencias circulares con Autofac 2.4.5?
cb.Register<DependsByProp>().OnActivated(ActivatedHandler.InjectUnsetProperties);
pero parece que ActivatedHandler ya no existe en 2.4.5. Buscando en la fuente, encontré la implementación de esa clase, así que puse la implementación del método en OnActivated. Lamentablemente, esto todavía no funciona.
He creado una copia mínima aquí que se parece a lo que estaba en la página 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<VM>();
builder.RegisterType<M>().OnActivated(e => e.Context.InjectUnsetProperties(e.Instance));
using (var container = builder.Build())
{
var m = container.Resolve<M>();
Assert.NotNull(m);
}
}
Este código todavía arroja una excepción de desbordamiento de pila cuando se intenta resolver. ¿Qué me estoy perdiendo? ¿Cuál es la forma correcta de hacer que Autofac maneje dependencias circulares?
Sí. Pensé que las dependencias circulares significaban lo mismo que los ciclos de instancias. Su respuesta a continuación señaló lo que me faltaba sobre los conceptos de dependencias circulares entre clases e instancias. – Ants