我试图在运行时将一个字符串注入到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);
请有人知道如何做到这一点吗?
答案 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;
});