[英]StructureMap : How to setup for Specific Concrete Instance of Interface to use particular CTOR
[英]How to use StructureMap for the case of primitive types in CTOR
我的课程有以下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 <ILog>()获取对象来工作。 我想在我有两个原始参数的情况下,我不能使用WithCtorArg()来匹配参数。 那正确吗? 注册我的映射的最佳方法是什么?
我今天开始使用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");
}
....
}
不,您绝对可以: http : //structuremap.sourceforge.net/InstanceExpression.htm#section5
最好的注册方式是在注册表DSL中使用注册表DSL,除了需要从Registry派生并在初始化时配置该注册表之外,请参见: http : //structuremap.sourceforge.net/RegistryDSL.htm
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.