2017-03-27 6 views
0

バインドをninjectからautofacに変換する際に2つの問題があります。c#ninject固有のバインディングをautofacに変換する

Bind<IMapper>().ToConstant(new Container().Mapper); 

と第二は、次のとおりです:

最初は

Bind<Context>().ToSelf() 
       .WithConstructorArgument(CONNECTION_STRING, 
       c => c.Kernel.Get<IUserDatabase>().ConnectionString) 

あなたは私の手を貸すことはできますか?

はあなたの最初のもののために

答えて

2

ありがとう:1秒間

builder 
    .RegisterInstance(new Container().Mapper) 
    .As<IMapper>(); 

// First option, with a parameter 
builder 
    .RegisterType<Context>() 
    .AsSelf() 
    .WithParameter(
     (parameter, context) => parameter.Name == CONNECTION_STRING, 
     (parameter, context) => context.Resolve<IUserDatabase>().ConnectionString)); 

// Second option, with a lambda 
builder 
    .Register(x => new Context(x.Resolve<IUserDatabase>().ConnectionString)) 
    .AsSelf(); 

あなたContextのコンストラクタに静的チェックを取得するよう、私は2番目のオプションを好みますあなたが多くのパラメータを持っているなら、それを維持するのは苦痛かもしれません。

this tweetからリンクされた記事を読むことをお勧めします。これは、プリミティブをコンストラクタパラメータとして使用することで、私たちの生活をより困難にし、その回避方法を説明しています。

+1

'.AsSelf()'は省略可能です。インターフェースによるレジストレーションがない場合、デフォルトの動作です。 – tdragon

+0

ちょうど素晴らしい。完璧。君たちありがとう。 – rmszc81

関連する問題