繁体   English   中英

对于CTOR中的原始类型,如何使用StructureMap

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM