我有以下代码:
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>
答案 0 :(得分:3)
您需要使用web.config中的设置配置UnityContainer实例。
UnityConfigurationSection section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
section.Configure(_container);