加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – Unity Container Resolve

发布时间:2020-12-15 08:48:08 所属栏目:百科 来源:网络整理
导读:我刚开始使用Unity Container,我的注册看起来像这样: static void UnityRegister(){ _container = new UnityContainer(); _container.RegisterTypeIBook,Book(); _container.RegisterTypeIBookRepository,BookRepository("Book"); _container.RegisterTypeI
我刚开始使用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>();

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读