2017-03-25 9 views
0

私は現在、.NetCoreとAutofacを学習しています.NinjectモジュールをAutofacモジュールに変換する方法については疑問があります。NinjectモジュールをAutofacに変換する

のは、いくつかのコードを見てみましょう:

モジュール:

using Ninject.Modules; 

namespace v0.CrossCutting.Ninject.Domain.Data 
{ 
    using v0.Domain.Data.Model.Interfaces; 
    using v0.Domain.Data.Model.Classes; 

    public class Model : NinjectModule 
    { 
     public override void Load() 
     { 
      try 
      { 
       Bind<IConfig>().To<Config>(); 
      } 
      catch 
      { 
       throw; 
      } 
     } 
    } 
} 

レジスタ:

using Ninject; 
using Ninject.Modules; 

namespace v0.CrossCutting.Ninject 
{ 
    public static class Container 
    { 
     private static IKernel Kernel; 

     static Container() 
     { 
      INinjectModule[] NinjectModules = new INinjectModule[] 
      { 
       new Domain.Data.Model() 
      }; 

      Kernel = new StandardKernel(NinjectModules); 
     } 

     public static TModel Resolve<TModel>() 
     { 
      try 
      { 
       return Kernel.Get<TModel>(); 
      } 
      catch 
      { 
       throw; 
      } 
     } 
    } 
} 

私は、インターネット上で検索し、別のスタックオーバーフローの質問が、私はまだどのようにそれを把握することができませんでしたそれをするために。

ありがとうございました。

+2

[スタートアッププロジェクトのみがコンテナについて知っておくべきである](http://blog.ploeh.dk/2011/07/28)、アプリケーションのすべてのプロジェクトにバインドを広げていることを意味します。/CompositionRoot /)。 – Steven

+0

それは交差切断層を有するDDDである。 @tdragon答えをテストします。ありがとうございました。 – rmszc81

答えて

2

オートファックモジュールは、Autofac documentationに記載されています。私はNinjectに精通していないですが、あなたがこのような何かを達成しようとしているようだ:

Ninjectと同様に、AutofacのModuleクラスを実装し、Loadメソッドをオーバーライドする必要がありますモジュールクラス:

public class ModelModule : Module 
{ 
    public override void Load(ContainerBuilder builder) 
    { 
     builder.RegisterType<Config>().As<IConfig>(); 
    } 
} 

を後でところで

public class ContainerConfig 
{ 
    public IContainer ConfigureAutofac() 
    { 
     var containerBuilder = new ContainerBuilder(); 
     containerBuilder.RegisterModule(new ModelModule()); 

     return containerBuilder.Build(); 
    } 
} 

、公共および静的Resolve方法と静的Containerクラスアンチパターンとみなされ、避けるべきである:あなたは、コンテナ自体の中にあなたのモジュールを登録する必要がありますed。

関連する問題