Mam dekorator, który ma kilka innych zależności, które powinny zostać rozwiązane za pomocą kontenera. Przykład:Zarejestruj dekoratora w autofac bez ręcznego określania wszystkich zależności
public class FooDecorator : IFoo
{
public FooDecorator(IFoo inner, IBar bar, IBaz baz)
}
mogę zarejestrować to tak:
builder.RegisterType<Foo>().As<IFoo>();
builder.RegisterDecorator<IFoo>((c, inner) =>
new FooDecorator(inner, c.Resolve<IBar>(), c.Resolve<IBaz>()), "key");
To działa, ale nie tak ładne, że muszę ręcznie określić wszystkie inne zależności. Co chciałbym zrobić, to:
builder.RegisterDecorator<FooDecorator, IFoo>("key");
Jeżeli IFoo
zostanie rozwiązany do „wewnętrzna” IFoo
i inne zależności zostały rozwiązane z pojemnika. Czy to możliwe, czy mogę zarejestrować dekorator za pomocą Func, który spowoduje to zachowanie?
To jest niesamowite, ale co jeśli nie wiesz (lub nie obchodzi), że konkretna implementacja 'IFoo' to' Foo'? Czy można zadeklarować coś podobnego do tego, jak "udekorować wszystko, co obecnie rozwiązuje" IFoo "za pomocą' FooDecorator'? (zakładając, że IFoo był wcześniej zarejestrowany, by dostarczyć 'IFoo', ale niekoniecznie jako _named_serwer) - PS Myślę, że to jest to, czego szukał OP, także –
@CristiDiaconescu nie ma łatwego rozwiązania, aby to zrobić i bez określania nazwanego pierwszy dekorator będziesz mieć 2 rejestracje w kontenerze Autofac. Jeśli chcesz uzyskać więcej informacji na temat tego, jak osiągnąć to, co chcesz, możesz zadać nowe pytanie. –