我似乎在做這在我的代碼公平一點:我必須使用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」)));'' –