Structuremap默认注册表动态值

时间:2017-03-29 07:22:06

标签: c# asp.net-mvc structuremap structuremap4

我试图在运行时将一个字符串注入到structuremap注册表中。我用静态字符串成功完成了它。像这样

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

但是当我试图在运行时使字符串动态时我无法弄清楚如何发送它,我已经尝试过HttpContext和Session但它们总是空的,如下例所示:

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

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

请有人知道如何做到这一点吗?

1 个答案:

答案 0 :(得分:1)

您只是完全预先评估dynamicString。你可能需要做懒惰,所以它就像这样评估:

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

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

    return dynString;
});