2017-03-29 7 views
1

実行時に構造マップレジストリに文字列を挿入しようとしています。私は正常に静的な文字列でそれをやった。このStructuremapデフォルトのレジストリの動的値

For<TestDAL>().Use<TestDAL>().Ctor<string>("connectionString").Is("randomStringData"); 

が、私は、実行時に文字列を動的にしようとしていますように私はそれを送信する方法を見つけ出すことはできないよ、私はのHttpContextとセッションを試してみましたが、彼らは常に、以下の例のように空です:

HttpContext.Current.GetOwinContext().Environment.TryGetValue("dynamicString", out object dynString); 

For<TestDAL>().Use<TestDAL>().Ctor<string>("connectionString").Is(dynString); 

どうすればいいですか?

答えて

1

dynamicStringは完全に初期化されています。

For<TestDAL>().Use<TestDAL>().Ctor<string>("connectionString").Is(() => { 
    string dynString = null; 

    HttpContext.Current.GetOwinContext() 
     .Environment.TryGetValue("dynamicString", out object dynString); 

    return dynString; 
}); 
+0

はあなたの助けをありがとうございましたが、文の本体でラムダ式は、式ツリーに変換することはできませんので、この解決策は現実的ではありません:あなたはそれはそうのような時間だけで評価されていますので、怠惰なそれを実行する必要がある場合があります。 – wandos

+0

**その他の**オーバーロードを使用すると、式の代わりに文字列と説明文Func を指定できます。 –

+0

あなたは私にどのようにして – wandos

関連する問題