c# - Register a decorator in autofac without manually specifying all dependencies -
i have decorator has other dependencies should resolved using container. example:
public class foodecorator : ifoo { public foodecorator(ifoo inner, ibar bar, ibaz baz) } i can register this:
builder.registertype<foo>().as<ifoo>(); builder.registerdecorator<ifoo>((c, inner) => new foodecorator(inner, c.resolve<ibar>(), c.resolve<ibaz>()), "key"); this working, not nice have manually specify other dependencies. is:
builder.registerdecorator<foodecorator, ifoo>("key"); where ifoo resolved 'inner' ifoo , other dependencies resolved container. possible, or can register decorator func result in behaviour?
in order avoid specifying dependencies manually, should register decorator in autofac , resolve within first parameter of registerdecorator method.
builder.registertype<foo>() .named<ifoo>("original"); builder.registertype<foodecorator>() .named<ifoo>("decorator"); builder.registerdecorator<ifoo>((c, inner) => c.resolvenamed<ifoo>("decorator", typedparameter.from(inner)), "original") .as<ifoo>(); registering decorator using named registration avoid conflicts.
c# dependency-injection decorator autofac
No comments:
Post a Comment