StructureMap从3.0版开始,放弃了对XML配置的支持。也就是说,我不能再告诉StructureMap哪个类满足配置中的哪个接口。相反,我必须在代码本身中提到它。这限制了我能够配置代码而无需重新编译代码的能力。
有没有办法让它可配置而无需重新编译解决方案? Unity supports that natively
如果没有办法做到这一点,为什么StructureMap删除了这个好的功能?
答案 0 :(得分:0)
XML配置被认为是过时的,毫无疑问最终将从所有DI容器中删除支持。问题是,代码中的配置强类型比易碎的XML结构和类型字符串更容易维护。
如果需要在不重新编译的情况下稍微改变一下,可以始终使用.config
文件向配置中添加条件行为(在应用程序的composition root中)。
var option = System.Configuration.ConfigurationManager.AppSettings["mySetting"];
if ("option1".Equals(option))
{
container.For<ISomething>().Use<Something>();
}
else if ("option2".Equals(option))
{
container.For<ISomething>().Use<SomethingElse>();
}
else
{
container.For<ISomething>().Use<DefaultSomething>();
}
所以你仍然可以改变现状,但是如果没有脆弱的难以维护的XML配置,那么在运行时你就不会意识到这一点。