mi sembra di fare questo un bel po 'nel mio codice:È necessario associare in modo esplicito le normali classi utilizzando Autofac?
public class ActionsModule : Module
{
protected override void Load(ContainerBuilder builder)
{
base.Load(builder);
builder.Register(c => LogManager.GetCurrentClassLogger()).As<ILog>().InstancePerDependency();
// Autofac doesn't seem to be able to inject things without explicit binding
builder.RegisterType<ComboActions>().As<ComboActions>().InstancePerHttpRequest();
builder.RegisterType<AppActions>().As<AppActions>().InstancePerHttpRequest();
}
}
}
Dove classe delle 'azioni' è una classe ho bisogno per essere iniettato in mio controller, e ha vari altri sub-dipendenze.
Sembra un po 'spazzatura. Perché non è possibile che autofac risolva il fatto che la classe abbia un costruttore con dipendenze che sono già soddisfatte e che producono automaticamente un'istanza?
Voglio dire, se la classe A richiede che la classe B venga iniettata e la classe B richieda C, D, E, ecc. Abbastanza giusto, immagino che tu non voglia percorrere l'intera catena di dipendenze per vedere se puoi fare una classe in fase di esecuzione. ... ma se la classe A dipende direttamente da C e D che sono esplicitamente vincolati, sicuramente questo è un caso banale?
Mi manca qualcosa? Non riesco a vedere alcuna documentazione per questo ...
Whoah. Mai saputo di questo. TIL! –
questo è INCREDIBILE, specialmente perché si può fare qualcosa come 'builder.RegisterSource (new AnyConcreteTypeNotAlreadyRegisteredSource (x => x.Name.Contains (" ViewModel ")));' –