Unity 3 でこの問題を解決する方法はありますか?
このメッセージ エラーを回避するために可能な限りのことを行いましたが、解決できません。私はすでにグーグル検索で見たことをすべてやった.
私はほとんどあきらめて、別の DI ソリューションを試しています。
私の構成ファイル:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration" />
</configSections>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<assembly name="Biblioteca" />
<assembly name="Biblioteca.Contracts" />
<assembly name="Biblioteca.Business" />
<namespace name="Biblioteca" />
<namespace name="Biblioteca.Contracts" />
<namespace name="Biblioteca.Business" />
<container>
<register type="Biblioteca.Contracts.IManterCategoriaBO" mapTo="Biblioteca.Business.ManterCategoriaBO" />
</container>
</unity>
</configuration>
私のインターフェース:
using Biblioteca.Transport;
using System.Linq;
namespace Biblioteca.Contracts
{
public interface IManterCategoriaBO
{
IQueryable<CategoriaDTO> GetAll();
CategoriaDTO GetById(int id);
void Insert(CategoriaDTO dto);
}
}
私の具体的なクラス:
using Biblioteca.Contracts;
using Biblioteca.Transport;
using Biblioteca.Data;
using System;
using System.Linq;
namespace Biblioteca.Business
{
public class ManterCategoriaBO : IManterCategoriaBO
{
public CategoriaDTO GetById(int id)
{
CategoriaDTO dto = new CategoriaDTO();
ManterCategoriaDO categoriaDO = new ManterCategoriaDO();
dto = categoriaDO.GetById(1);
return dto;
}
public IQueryable<CategoriaDTO> GetAll()
{
throw new NotImplementedException();
}
public void Insert(CategoriaDTO dto)
{
throw new NotImplementedException();
}
}
}
私の Global.asax:
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using Biblioteca.Dependency;
namespace Biblioteca
{
// Note: For instructions on enabling IIS6 or IIS7 classic mode,
// visit http://go.microsoft.com/?LinkId=9394801
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//Below is a static variable to take the unity container
//which is on a dependency project
Global.Container = Bootstrapper.Initialise();
}
}
}
私のブートストラップクラス:
using Microsoft.Practices.Unity;
using Microsoft.Practices.Unity.Configuration;
using System.Configuration;
using System.Web.Mvc;
using Unity.Mvc4;
namespace Biblioteca
{
public static class Bootstrapper
{
public static IUnityContainer Initialise()
{
var container = BuildUnityContainer();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
return container;
}
private static IUnityContainer BuildUnityContainer()
{
string path = ConfigurationManager.AppSettings["UnityConfigFilePath"].ToString();
var fileMap = new ExeConfigurationFileMap() { ExeConfigFilename = path + "\\Unity.config" };
System.Configuration.Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);
var unitySection = (UnityConfigurationSection)configuration.GetSection("unity");
//*** this line is firing the error !!! ****
var container = new UnityContainer().LoadConfiguration(unitySection);
return container;
}
}
}
私の依存関係プロジェクトの静的クラス:
using Microsoft.Practices.Unity;
namespace Biblioteca.Dependency
{
public static class Global
{
public static IUnityContainer Container = null;
public static T Resolve<T>()
{
return Container.Resolve<T>();
}
}
}
MVC 4 プロジェクトの UI モデル クラス ファイル。私は4.5フレームワークを使用しています。
using Biblioteca.Contracts;
using Biblioteca.Dependency;
namespace Biblioteca.Models
{
public class LivroModel
{
public void GetAll()
{
if (Global.Container != null)
{
var categoriaBO = Global.Resolve<IManterCategoriaBO>();
categoriaBO.GetById(1);
}
}
}
}
すべてが正しい方向に進んでいると思います。しかし、この DI の動作を確認できません。これは、マッピング プロセスでエラーが発生したためです。以下の Bootstrapper クラスの BuildUnityContainer メソッドの行で:
var コンテナー = 新しい UnityContainer().LoadConfiguration(unitySection);
エラーは次のとおりです。
タイプ名または別名 Biblioteca.Contracts.IManterCategoriaBO を解決できませんでした。構成ファイルを確認して、このタイプ名を確認してください。
私はすべてのクラスを再確認しましたが、私にとっては問題ありません。それとも何かが欠けていますか?