我正在尝试初始化StructureMap以注入一个具有一个构造函数的具体类,该构造函数需要4个字符串参数。
通常,对于具有无参数构造函数的类,我只会这样做:
For<IMyClass>().Use<MyClass>();
但是,如果MyClass有一个构造函数,我该怎么做?
public class MyClass : IMyClass
{
public MyClass(string name, string etc)
{
}
}
答案 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")));
}
}