私は、この私のコード内の公平なビットをやっているように見える: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();
}
}
}
[アクション]クラスは、私は私のコントローラに注入する必要がクラスであり、様々な他のサブの依存性を有する場合。
少しゴミに見えます。なぜautofacは、すでに満たされている依存関係を持つコンストラクタをクラスに持たせ、自動的にインスタンスを作成することができないのでしょうか?
私は、クラスAがクラスBを注入する必要があり、クラスBがC、D、Eなどを十分に必要とするならば、あなたはクラスを作ることができるかどうかを知るために、実行時に...しかし、クラスAが明示的にバインドされているCとDに直接依存している場合、確かにそれは簡単なケースですか?
何か不足していますか?このためのドキュメントが見当たらないようです...
ウワ。これについては決して知らなかった。 TIL! –
これは驚くべきことです。特に、 'builder.RegisterSource(new AnyConcreteTypeNotAlreadyRegisteredSource(x => x.Name.Contains(" ViewModel ")));' –