Skip to main content
 首页 » 编程设计

c#之如何在 CTOR 中使用 StructureMap 处理基本类型

2024年02月03日31飞鱼

我有一个类(class)的以下 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 () 中的对象工作。我想在我有两个原始参数的情况下,我不能使用 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"); 
    } 
 .... 
}