如何交出具体参数

How to hand over a specific parameter

假设我有以下类及其接口

public class MyService : IMyService
{
    int _value;

    public MyService (int value)
    {
        _value = value;
    }
}


public class MyClass : IMyClass
{
    IMyService _myService;

    public MyClass(IMyService myService)
    {
        _myService = myService;
    }
}

第 1 步:使用 autofac 在我的测试项目中设置构造函数:

public class Configuration : Autofac.Module
{
    protected override void Load(ContainerBuilder builder)
    {
        builder.RegisterType<MyClass>().As<IMyClass>()
            .InstancePerLifetimeScope();

        builder.RegisterType<MyService>().As<IMyService>()
            .InstancePerLifetimeScope();
    }
}

第 2 步:设置测试

public class MyApplication
{
    readonly int _value = 1234;
    private MyClass _myClass;

    public MyApplication(IMyClass myClass)
    {
        _myClass = myClass;
    }
}

现在,如何注入配置器未知但“MyApplication”已知的参数“值”?

之前的想法是这样做

public class MyApplication
{
    readonly int _value = 1234;
    private MyClass _myClass;

    public MyApplication()
    {
        _myService = new MyService(_value);
        _myClass = new MyClass(_myService);
    }
}

但现在我正在尝试使用依赖倒置和依赖注入来解决上述问题。

您必须在 autofac 配置中调用构造函数。

builder.Register((comCont, parameters) => new MyClass(123))
  .As<IMyClass>()
  .InstancePerLifetimeScope();