MvvmCross 解析类型失败
MvvmCross Failed to Resolve Type
我在 iOS 项目中使用 MvvmCross v6.2.1,但出现以下异常:
MvvmCross.Exceptions.MvxIoCResolveException 已被抛出。未能解析类型 Countr.Core.Services.IMediaManagerService。
为了解决这个问题,我向 App.cs
添加了一些调试代码
using MvvmCross.IoC;
using Countr.Core.ViewModels;
using Countr.Core.Services;
using MvvmCross;
using MvvmCross.ViewModels;
using System.Linq;
namespace Countr.Core
{
public class App : MvxApplication
{
public override void Initialize()
{
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
CreatableTypes()
.EndingWith("Repository")
.AsInterfaces()
.RegisterAsLazySingleton();
var x = new MediaManagerService();
var y = this.CreatableTypes().FirstOrDefault(t => t.Name == "MediaManagerService");
var z = Mvx.IoCProvider.Resolve<IMediaManagerService>();
RegisterAppStart<ArticlesViewModel>();
}
}
}
变量x和y创建成功,即创建MediaManagerService没有错误,MediaManagerService在CreatableTypes()集合中列出。然而,代码在初始化变量 z 时崩溃,即在执行 Resolve 方法时。
我做错了什么?
检查您是否有多个 MediaManagerService
因为它可能正在尝试构建另一个实例。
而不是
var y = this.CreatableTypes().FirstOrDefault(t => t.Name == "MediaManagerService");
检查
var ylist = this.CreatableTypes().Where(t => t.Name == "MediaManagerService").ToList();
如果您仍然只有一次 MediaManagerService
尝试注册
Mvx.IoCProvider.LazyConstructAndRegisterSingleton<IMediaManagerService, MediaManagerService>();
如果你有不止一次的实施,那么你可以在注册 CreatableTypes
之后对一次实施执行上述解决方案,这样它就会覆盖以前的注册,或者你可以简单地更改名称interface/implementation 以便扫描为您提供一对独特的 Interface/Implementation 进行注册。
我在 iOS 项目中使用 MvvmCross v6.2.1,但出现以下异常: MvvmCross.Exceptions.MvxIoCResolveException 已被抛出。未能解析类型 Countr.Core.Services.IMediaManagerService。 为了解决这个问题,我向 App.cs
添加了一些调试代码using MvvmCross.IoC;
using Countr.Core.ViewModels;
using Countr.Core.Services;
using MvvmCross;
using MvvmCross.ViewModels;
using System.Linq;
namespace Countr.Core
{
public class App : MvxApplication
{
public override void Initialize()
{
CreatableTypes()
.EndingWith("Service")
.AsInterfaces()
.RegisterAsLazySingleton();
CreatableTypes()
.EndingWith("Repository")
.AsInterfaces()
.RegisterAsLazySingleton();
var x = new MediaManagerService();
var y = this.CreatableTypes().FirstOrDefault(t => t.Name == "MediaManagerService");
var z = Mvx.IoCProvider.Resolve<IMediaManagerService>();
RegisterAppStart<ArticlesViewModel>();
}
}
}
变量x和y创建成功,即创建MediaManagerService没有错误,MediaManagerService在CreatableTypes()集合中列出。然而,代码在初始化变量 z 时崩溃,即在执行 Resolve 方法时。
我做错了什么?
检查您是否有多个 MediaManagerService
因为它可能正在尝试构建另一个实例。
而不是
var y = this.CreatableTypes().FirstOrDefault(t => t.Name == "MediaManagerService");
检查
var ylist = this.CreatableTypes().Where(t => t.Name == "MediaManagerService").ToList();
如果您仍然只有一次 MediaManagerService
尝试注册
Mvx.IoCProvider.LazyConstructAndRegisterSingleton<IMediaManagerService, MediaManagerService>();
如果你有不止一次的实施,那么你可以在注册 CreatableTypes
之后对一次实施执行上述解决方案,这样它就会覆盖以前的注册,或者你可以简单地更改名称interface/implementation 以便扫描为您提供一对独特的 Interface/Implementation 进行注册。