IOC Unity的配置问题

最近在看IOC,看到了Unity这个实现框架,看着好像很容易使用,就自己写个Demo试试,没想到看似简单的使用,也能遇到大问题,搞了大半天才解决这个问题。

Demo的Unity配置如下:

 <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration" />
  </configSections>
  <unity>
    <containers>
      <container name="defaultContainer">
        <register type="NinjectConsole.Interface.IA,NinjectConsole" mapTo="NinjectConsole.attcak.A, NinjectConsole" />
        <register type="NinjectConsole.Interface.IB,NinjectConsole" mapTo="NinjectConsole.attcak.B, NinjectConsole" />
        <register type="NinjectConsole.Interface.IC,NinjectConsole" mapTo="NinjectConsole.attcak.C, NinjectConsole" />       
      </container>
    </containers>
  </unity>

实现如下:

UnityContainer container = new UnityContainer();
UnityConfigurationSection configuration = (UnityConfigurationSection)ConfigurationManager.GetSection(UnityConfigurationSection.SectionName);
configuration.Configure(container, "defaultContainer");
A a
= container.Resolve<IA>() as A;

实现就这样,网上到处是,但是我用了却总有问题。

VS问题如下:

 经过排查,该引用的引用了,还有什么隐藏依赖吗?或者是配置文件有问题?度娘里找到点类似问题,说的是配置问题,就先改改配置,看能不能解决。

有说ConfigSections->section中引用的type要加入版本,公钥的那些东西,修改后如下:

<configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection,Microsoft.Practices.Unity.Configuration,Version=5.1.2.0, Culture=neutral, PublicKeyToken=6d32ff45e0ccc69f" />
  </configSections>

然而并没有用,还是一样报错,使用这个section的时候就报错了。Microsoft.Practices.Unity.Configuration这个真的很奇怪,是在Unity.Configuration这个dll中的,程序中有引用了,却还是报这个错误。找了半天,并没有发现相关问题的,想着是不是版本问题,因为用了最新版本的,就降了版本,在NuGet中把Unity更新到4.0.1这个版本,发现Microsoft.Practices.Unity这个dll有了,没有隐藏。将引用的部分重新修改,运行,终于通过了。

通过Unity识别配置,把A类注入进来了。

Demo是运行起来了,但是到Unity5.0及以上版本都会把Microsoft.Practices.Unity.Configuration这个类放在Unity.Configuration这个dll中,这样就没办法使用了,找不到相关解决方案,有解决这个问题的大牛,还请告知,感谢万分。

 

转载于:https://www.cnblogs.com/blacktusz/p/8676456.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值