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

C# 使用具有带参数的构造函数的类初始化StructureMap,c#,structuremap,C#,Structuremap,我试图初始化StructureMap来注入一个具体的类,这个类只有一个构造函数,它接受4个字符串参数 通常,对于具有无参数构造函数的类,我只需执行以下操作: For<IMyClass>().Use<MyClass>(); 这对我有用 public interface IMyClass { string MyMethod(); } public class MyClass : IMyClass { private readonly string myNa

我试图初始化StructureMap来注入一个具体的类,这个类只有一个构造函数,它接受4个字符串参数

通常,对于具有无参数构造函数的类,我只需执行以下操作:

For<IMyClass>().Use<MyClass>();
这对我有用

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")));
    }
}
公共接口IMyClass
{
字符串MyMethod();
}
公共类MyClass:IMyClass
{
私有只读字符串myName;
私有只读字符串myEtc;
公共MyClass(字符串名称、字符串等)
{
我的名字=名字;
myEtc=etc;
}
公共字符串MyMethod()
{
返回myName+myEtc;
}
}
公共类工厂测试
{
公共字符串GetMyString()
{
RegisterMyClass();
返回ObjectFactory.GetInstance().MyMethod();
}
public void RegisterMyClass()
{
ObjectFactory.Initialize(
f=>f.For().Use(x=>newmyclass(“a”,“b”));
}
}

如果要传递的值在注册时已知,则可以使用以下选项:

For<IMyClass>().Use<MyClass>()
  .Ctor<string>("name").Is("theName")
  .Ctor<string>("etc").Is("etcetera");
For()。使用()
.Ctor(“名称”)为(“名称”)
.Ctor(“等”)为(“等”);

仅添加
ObjectFactory.Initialize(f=>f.For().Use(x=>newmyclass(“a”,“b”))
没有为PluginFamily IMyClass定义默认实例,然后我尝试为()添加
for()在初始化调用之前,但得到了与在缺少InstanceKey“13f56e3a-23a7-4822-9fa9-f61276fb8019”的请求实例属性“username”之前相同的错误。我们必须采取不同的做法。无论如何,菲贝格的答案看起来更好
For<IMyClass>().Use<MyClass>()
  .Ctor<string>("name").Is("theName")
  .Ctor<string>("etc").Is("etcetera");