使用 web.config 的 Unity 配置
Unity configuration using web.config
我有以下代码:
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);
我有以下代码:
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);