使用 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 中的设置配置 UnityContainer 实例。
UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(_container);