如何在CTOR中使用StructureMap来处理基本类型的情况

时间:2009-04-28 03:03:35

标签: c# structuremap

我在课程中遵循以下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()来匹配参数。是对的吗?注册我的映射的最佳方法是什么?

2 个答案:

答案 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