我不太确定 DryIoc 是否值得我花时间。它看起来像轻量级并且在跨平台环境(使用 Xamarin)中得到很好的支持。但我觉得使用它有点困难(就我自己探索一切而言)。
DryIoc 社区也不是很大(通过阅读有关 DryIoc 的一些答案,我意识到看起来只有作者加入并给出答案)。这是标题中提到的我的问题。假设我有 2 个 ViewModel 类,第二个有一个属性应该始终与第一个的属性匹配(映射),如下所示:
public class ParentViewModel {
}
public class FirstViewModel {
public FirstViewModel(ParentViewModel parent){
}
public string A {
//...
}
}
public class SecondViewModel {
public SecondViewModel(ParentViewModel parent){
}
public string A {
//...
}
}
现在我可以使用 dryioc 为两个 ViewModels 注册单例,但对于第二个,我还需要注入属性 A 以及第一个属性 A 的值。
container.Register<ParentViewModel>();
container.Register<FirstViewModel>(reuse: Reuse.Singleton, made: Made.Of(() => new FirstViewModel(Arg.Of<ParentViewModel>())));
container.Register<SecondViewModel>(reuse: Reuse.Singleton, made: Made.Of(() => new SecondViewModel(Arg.Of<ParentViewModel>())));
所以你可以看到第一次注册应该没问题,因为不需要属性依赖。然而,第二个应该有它的A属性取决于A第一个。
真的,我自己无法探索这个。注入一些注册类型的属性很好(至少我知道怎么做),但是这里注入的值是一些注册类型的另一个属性。