我在课程中遵循以下CTOR:
public class Log : ILog {
...
public Log (string file, string flag) { .... }
....
}
我尝试使用以下代码进行DI映射:
public MyStructureMap {
public void static InitializeMapping() {
StructureMap.DSL.Registiry.ForRequestedType<ILog>().TheDefault.Is
.OfConcreteType<Log>().WithCtorArg("file").EqualTo(@"C:\tmp\log.txt");
StructureMap.DSL.Registiry.ForRequestedType<ILog>().TheDefault.Is
.OfConcreteType<Log>().WithCtorArg("flag").EqualTo(@"debug");
}
....
}
我无法从ObjectFactory.GetInstance&lt; ILog&gt;()中获取对象。我想在我的情况下有两个原始参数我不能使用WithCtorArg()来匹配参数。是对的吗?注册我的映射的最佳方法是什么?
答案 0 :(得分:3)
我今天开始使用StructureMap,当我发现你的问题时,我正在寻找StackOverflow的答案。你的问题有点老了,但是如果你没有得到你的答案,请点击这里:
您可以使用多个基本参数。您只需更改语法即可利用流畅的界面:
public MyStructureMap {
public void static InitializeMapping() {
StructureMap.DSL.Registiry.ForRequestedType<ILog>().TheDefault.Is.OfConcreteType<Log>()
.WithCtorArg("file").EqualTo(@"C:\tmp\log.txt")
.WithCtorArg("flag").EqualTo(@"debug");
}
....
}
答案 1 :(得分:2)
不,你绝对可以:http://structuremap.sourceforge.net/InstanceExpression.htm#section5
注册映射的最佳方法是使用注册表DSL,除非您需要从注册表派生并在初始化中配置该注册表,否则需要使用注册表DSL:http://structuremap.sourceforge.net/RegistryDSL.htm