我在使用多个服务的项目中使用MVVM Cross。我想要做的是从IoC容器中检索当前注册的服务列表。例如:从MVVM Cross IoC Container访问已注册的服务
Mvx.LazyConstructAndRegisterSingleton<IService1, IService1>();
Mvx.LazyConstructAndRegisterSingleton<IService2, IService2>();
Mvx.LazyConstructAndRegisterSingleton<IService3, IService3>();
然后
var s1 = Mvx.Resolve<IService1>();
var s3 = Mvx.Resolve<IService3>();
所以现在我想回到活动服务的列表。我知道我可以使用反射来做到这一点,但我想知道是否有办法从IoC容器中获取此信息;例如:
var activeSvc = Mvx.GetAllServices();
这可能吗?在MvxSimpleIoCContainer
有解析器的字典:
private readonly Dictionary<Type, IResolver> _resolvers = new Dictionary<Type, IResolver>();
这看起来是我想要的,但它不是公开曝光。
好的,谢谢。是的,我确实考虑过反思,但它可能是昂贵的。 – 2014-11-25 11:06:34
我的建议:使用反射的原型 - 如果花费太多,那么你可以优化。 (使用IoC和MvvmCross也是如此) – Stuart 2014-11-25 11:32:31