多種實現解決工廠方法給定:與autofac
public class InfoA { /* impl */ }
public class InfoB { /* impl */ }
public class ViewModelBase {}
public class ViewModelA : ViewModelBase
{
public ViewModelA(InfoA info, Dep1 dep1, Dep2, dep2) { }
}
public class ViewModelB : ViewModelBase
{
public ViewModelB(InfoB info, Dep3 dep3, Dep4 dep4) { }
}
如何註冊類型,以我的容器,這樣我可以做
class ViewModelRepository
{
public ViewModelRepository(
Func<InfoA, ViewModelA> factA,
Func<InfoA, ViewModelB> factB) { }
}
或交替Func<InfoA, ViewModelBase>
和Func<InfoB, ViewModelBase>
?
目前我有
builder.RegisterType<ViewModelA>().As<ViewModelBase>()
builder.RegisterType<ViewModelB>().As<ViewModelBase>();
這似乎只爲最後登記的工作類型。