如何使autofac实时解析带有参数的构造函数?

时间:2019-01-17 11:30:35

标签: c# autofac

易于理解我的意思的例子:

public interface IWarrior
{
    string GetName();
}

public class HumanWarrior : IWarrior
{
    string _name;
    public HumanWarrior(string name)
    {
        _name = name;
    }

    public string GetName()
    {
        return _name;
    }
}

public class  AnimalWarrior : IWarrior
{
    string _name;
    public AnimalWarrior(string name)
    {
        _name = name;
    }

    public string GetName()
    {
        return "animal" + _name;
    }
}

在我的代码中,我将其用作:

    ...code
    string warriorName = "Glark";
    WarriorService warriorService = new WarriorService(new HumanWarrior(warriorName));
   ...code

我知道如果嵌套类的构造函数为空,如何使用Autofac解析IWarrior;但是,如果我需要创建IWarrior的示例,那需要“名称”参数,并且无法在Autofac设置中配置此参数的值,该怎么办?

1 个答案:

答案 0 :(得分:0)

我不会那样做,这不是像Autofac这样的IOC容器的重点。

我要做的是创建一个postgres属性或一个函数public string Name {get; set;}

编辑: 这就是我要构建的方式

public void Init(string name) { ... }

或者类似这样的东西:

public class HumanWarrior : IWarrior
{
    public string Name { get; set; }
}

具有这样的界面:

    public class HumanWarrior : IWarrior
    {
        public string Name { get; private set; }

        public void Init(string name)
        {
            Name = name;
        }
    }