使用 web.config 进行 Unity 配置

本文关键字:Unity 配置 进行 config web 使用 | 更新日期: 2023-09-27 18:32:07

我有以下代码:

using System.Web.Http;
using Coben.DataAccess.Tests.Constructiv.CentralDB.Contracts.ServiceContracts;
using Coben.Person.DataAccess;
using Constructiv.CentralDB.Contracts.ServiceContracts;
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
using Unity.WebApi;
namespace CoBen.UI
{
    public static class UnityConfig
    {
        public static void RegisterComponents()
        {
            var container = new UnityContainer();
            container.RegisterInstance<IPersonService>(new PersonServiceMock().Mock);
            container.RegisterType<PersonRepository>();
            GlobalConfiguration.Configuration.DependencyResolver = new UnityDependencyResolver(container);
        }
    }
}

这将配置我的依赖注入。但我想从我的 web.config 做同样的事情。

我有以下几点:

<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<alias alias="IPersonService" type="Constructiv.CentralDB.Contracts.ServiceContracts.IPersonSercice, Constructiv.CentralDB.Contracts.ServiceContracts" />
<namespace name="Coben.DataAccess.Tests.Constructiv.CentralDB.Contracts.DataContracts.Persons" />
<assembly name="Coben.DataAccess.Tests.Constructiv.CentralDB.Contracts.DataContracts.Persons" />
<container>
  <register type="IPersonService" name="special" mapTo="PersonServiceMock().Mock" />    
</container>

但是当我这样做时,我会收到一条错误消息:

无法解析类型名称或别名 IPersonService。请检查您的配置文件并验证此类型名称。

我做错了什么或我没有看到什么?

更新:我知道收到以下错误:无法解析类型名称或别名 Constructiv.CentralDB.Contracts.ServiceContracts.IPersonService、Constructiv.CentralDB.Contracts.ServiceContracts。请检查您的配置文件并验证此类型名称。

我的配置如下所示:

  <configSections>
    <section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<container>        
    <register type="Constructiv.CentralDB.Contracts.ServiceContracts.IPersonService, Constructiv.CentralDB.Contracts.ServiceContracts"                  
        mapTo="Coben.DataAccess.Tests.Constructiv.CentralDB.Contracts.DataContracts.Persons.PersonServiceMock().Mock, Coben.DataAccess.Tests.Constructiv.CentralDB.Contracts.DataContracts.Persons" />    
</container>

使用 web.config 进行 Unity 配置

您需要使用 web.config 中的设置配置 UnityContainer 实例。

UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(_container);