0
私はunity.configで統一の設定を定義したMVCアプリケーションユニティコンテナをコントローラからユニティコンフィグレーションで定義する方法は?
におけるマイクロソフトの団結を設定しようとしています:
public static class UnityConfig
{
public static void RegisterComponents()
{
var container = new UnityContainer();
container.RegisterType<IAccessLogBLL, AccessLogBLL>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
}
}
私はGlobal.asaxのからその設定を呼び出す:
今protected void Application_Start()
{
GlobalConfiguration.Configuration.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Ignore;
UnityConfig.RegisterComponents();
}
私はそのメソッドを解決するために呼び出す前にコントローラからそのコンテナの設定を定義して正常に動作しますが、unity.configで定義されたコンテナはどのように使用できますか? "getContainer"メソッドがありますか、またはユニティコンテナのグローバル変数を宣言する必要がありますか?
private IAccessLogBLL _accessLogBLL;
public AccessLogController()
{
IUnityContainer container = new UnityContainer();
container.RegisterType<IAccessLogBLL, AccessLogBLL>();
DependencyResolver.SetResolver(new UnityDependencyResolver(container));
_accessLogBLL = container.Resolve<IAccessLogBLL>(new ParameterOverride("unitOfWork", UnitOfWork));
}
おかげで、私の英語
そのアプローチは結構ですが、私は([レイジー](https://msdn.microsoft.com/en-us/library/dd642331を使用しますv = 1.10).aspx)を使用してスレッドの安全を確保します。たとえば、次のように 'プライベート静的レイジーコンテナ=新しいレイジー(()=> { するvarコンテナ=新しいUnityContainer(); /*ここにあなたのタイプを登録*/ リターン容器と、 }) ; –
strangecat
適切な[スレッドセーフティモード]を選択できます(https://msdn.microsoft.com/en-us/library/system.threading.lazythreadsafetymode(v = vs.110).aspx) – strangecat
ありがとう、私はあなたのアドバイスをチェックします – Mikelon85