抢先rtfm免责声明:StructureMap的文档是一个过时的主要版本,它所记录的API甚至不再存在,更不用说标记为过时的属性。
我有一个环境设置,对于所有意图和目的,可以将其视为静态应用程序范围的布尔值。这个布尔值的结果需要控制插入我的接口的哪个实现。条件的sample documentation对于我正在寻找的东西是完美的,但3.1.1.134中没有这些方法(最新的NuGet截至9/8/2014)。
我正在寻找以下伪语法的当前版本,并且不要让" GetEnvironmentVariable"是一个红色的鲱鱼 - 它只是一个运行时系统范围的布尔值的例子,需要在图形构建上进行评估。
public ConditionalInjectionRegistry : Registry
{
For<IBehavior>().UseConditionally(u =>
{
u.Conditionally(() => Environment.GetEnvironmentVariable("foo") == "bar")).Is<FooedBehavior>();
u.Default.Is<NormalBehavior>();
});
}
答案 0 :(得分:2)
根据mailing list,现在正确的方法是使用Use()
内的lambda。
For<IIndexResolver>().Use("some description for diagnostics", c => {
// and just do it all with a single anonymous lambda
});