c# – Unity Container Resolve

前端之家收集整理的这篇文章主要介绍了c# – Unity Container Resolve前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚开始使用Unity Container,我的注册看起来像这样:
static void UnityRegister()
{
      _container = new UnityContainer();
      _container.RegisterType<IBook,Book>();
      _container.RegisterType<IBookRepository,BookRepository>("Book");
      _container.RegisterType<IBookService,BookService>();
      _container.RegisterType<IBookRepository,DatabaseRepository>("Database");
}

现在当我尝试解决这个问题:

var service = _container.Resolve<IBookService>("Database");

我收到以下错误

Resolution of the dependency Failed,type = “UnityConsoleEx.IBookService”,name = “Database”.
Exception occurred while: while resolving.
Exception is: InvalidOperationException – The current type,UnityConsoleEx.IBookService,is an interface and cannot be constructed. Are you missing a type mapping?

At the time of the exception,the container was:

Resolving UnityConsoleEx.IBookService,Database

谁能指出我做错了什么?

解决方法

主要问题是您没有为BookService使用命名实例.
_container.RegisterType<IBookService,BookService>();

但是您正尝试使用命名实例进行解析.

var service = _container.Resolve<IBookService>("Database");

您需要在没有名称的情况下解析以获取该实例.

var service = _container.Resolve<IBookService>();

但是,从您的示例中不清楚为什么您首先使用命名实例.如果发布服务的构造函数,将更清楚如何使配置工作.

原文链接:https://www.f2er.com/csharp/244918.html

猜你在找的C#相关文章