C# 非泛型Mvx.Resolve()方法?

C# 非泛型Mvx.Resolve()方法?,c#,windows-phone-8,xamarin,mvvmcross,C#,Windows Phone 8,Xamarin,Mvvmcross,在我的基于MvvmCross的应用程序中, 我正在我的共享核心应用程序类中向Mvx IOC容器注册一些单例服务类,如下所示: CreatableTypes() .EndingWith("Service") .AsInterfaces() .RegisterAsSingleton(); 所有已注册的服务都从基类继承: public abstract class BaseService { public abstract void MyMethod(); } 应用

在我的基于
MvvmCross
的应用程序中,
我正在我的
共享核心应用程序
类中向
Mvx IOC容器
注册一些单例服务类,如下所示:

CreatableTypes()
    .EndingWith("Service")
    .AsInterfaces()
    .RegisterAsSingleton();
所有已注册的服务都从基类继承:

public abstract class BaseService
{
    public abstract void MyMethod();
}
应用程序启动后,我想在每个注册的服务上运行
MyMethod()

我试图执行以下操作:

var serviceTypes = ReflectionUtils.GetTypesFromBase<BaseService>();
foreach (Type serviceType in serviceTypes)
{
    BaseService service = (BaseService)Mvx.IocConstruct(serviceType);
    service.MyMethod();
}
var serviceTypes=ReflectionUtils.GetTypesFromBase();
foreach(serviceTypes中的类型serviceType)
{
BaseService=(BaseService)Mvx.IocConstruct(serviceType);
service.MyMethod();
}
但是调用
Mvx.IocConstruct
会创建另一个对象,我想对IoC注册期间创建的singleton实例执行该操作

我想我需要的是类似于
Mvx.Resolve(Type t)
的东西,但这种方法并不存在

我必须明确解析所有服务,并在,
或者有其他选择吗?

提前感谢您的帮助

基础IoC提供程序接口确实有一个方法:

 object Resolve(Type t)
但是它并没有出现在静态类中——以前没有人需要它

如果您想访问它,那么您可以-只需以与静态
Mvx
帮助程序相同的方式访问ioc提供程序即可:

        var ioc = MvxSingleton<IMvxIoCProvider>.Instance;
        var yourObject = ioc.Resolve(type);

还有一种方法可能对你有用


您可以在注册类型时注册回调-请参阅
Mvx.callbackwhen registered
-这将在注册类型时为您提供回调(可能不是在实际创建类型时)。

一个完整而详细的答案,一如既往。。。谢谢你的努力!
  var query = CreatableTypes()
      .EndingWith("Service")
      .AsInterfaces();

  var serviceList = new List<BaseService>();

  foreach (var item in query)
  {
       var service = (BaseService)Mvx.IocConstruct(item.ImplementationType);
       serviceList.Add(service);
       foreach (var interfaceType in item.ServiceTypes)
       {
           Mvx.RegisterSingleton(interfaceType, service);
       }
  }

  foreach (var service in serviceList)
  {
       service.MyMethod();
  }