使用具有带参数的构造函数的类初始化StructureMap

时间:2011-04-14 14:56:22

标签: c# structuremap

我正在尝试初始化StructureMap以注入一个具有一个构造函数的具体类,该构造函数需要4个字符串参数。

通常,对于具有无参数构造函数的类,我只会这样做:

For<IMyClass>().Use<MyClass>();

但是,如果MyClass有一个构造函数,我该怎么做?

public class MyClass : IMyClass
{
    public MyClass(string name, string etc)
    {

    }
}

2 个答案:

答案 0 :(得分:2)

如果您想要传递的值在注册时已知,您可以使用:

For<IMyClass>().Use<MyClass>()
  .Ctor<string>("name").Is("theName")
  .Ctor<string>("etc").Is("etcetera");

答案 1 :(得分:1)

这对我有用

public interface IMyClass
{
    string MyMethod();
}

public class MyClass : IMyClass
{
    private readonly string myName;
    private readonly string myEtc;

    public MyClass(string name, string etc)
    {
        myName = name;
        myEtc = etc;
    }

   public string MyMethod()
   {
       return myName + myEtc;
   }
}

public class FactoryTest
{
    public string GetMyString()
    {
        RegisterMyClass();
        return ObjectFactory.GetInstance<IMyClass>().MyMethod();
    }

    public void RegisterMyClass()
    {
        ObjectFactory.Initialize(
              f => f.For<IMyClass>().Use(x => new MyClass("a", "b")));
    }
}