C# DependencyResolver不';无法解决依赖关系。为什么?
我在一个项目中使用Unity作为我的IoC UnityConfig是这样设置的C# DependencyResolver不';无法解决依赖关系。为什么?,c#,dependency-injection,inversion-of-control,unity-container,C#,Dependency Injection,Inversion Of Control,Unity Container,我在一个项目中使用Unity作为我的IoC UnityConfig是这样设置的 public static class UnityConfig { private static readonly IUnityContainer container = new UnityContainer(); public static void ConfigureIoCContainer() { My.Composition.Builder.Compose(conta
public static class UnityConfig
{
private static readonly IUnityContainer container = new UnityContainer();
public static void ConfigureIoCContainer()
{
My.Composition.Builder.Compose(container);
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
/// <summary>
/// Gets the configured Unity container.
/// </summary>
public static IUnityContainer GetConfiguredContainer()
{
return container;
}
}
public ConfigUow(ICrudRepo<AM.Configuration> crudRepo = null) : base(crudRepo)
{
CrudRepo = crudRepo ?? DependencyResolver.Current.GetService<IConfigRepo>();
Ctx = CrudRepo.GetContext();
}
container.RegisterType(typeof (ICrudRepo<>), typeof (CrudRepo<>));
但是,如果我让下一行执行以设置DependencyResolver并调用
DependencyResolver.Current.GetService<IConfigUow>();
工作并返回SecurityUow
的实例。尝试解析IResourceUow
也会失败
我看不出我做错了什么。有人有什么想法吗
更新
好的,通过调用container.Resolve(IConfigUow)
我得到了一个被DependencyResolver屏蔽的异常
该错误表明我缺少类型映射。ConfigUow
的构造函数如下所示
public static class UnityConfig
{
private static readonly IUnityContainer container = new UnityContainer();
public static void ConfigureIoCContainer()
{
My.Composition.Builder.Compose(container);
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
/// <summary>
/// Gets the configured Unity container.
/// </summary>
public static IUnityContainer GetConfiguredContainer()
{
return container;
}
}
public ConfigUow(ICrudRepo<AM.Configuration> crudRepo = null) : base(crudRepo)
{
CrudRepo = crudRepo ?? DependencyResolver.Current.GetService<IConfigRepo>();
Ctx = CrudRepo.GetContext();
}
container.RegisterType(typeof (ICrudRepo<>), typeof (CrudRepo<>));
这一切都奏效了
对于未来的读者来说,这些页面证明是有用的
发现解决这个问题并不难。请读者查看原始问题的更新,了解我必须修复的内容以及我是如何修复的。无法重现您的问题。你能提供一份吗?。谢谢@YacoubMassad,但我想我已经安排好了。