当前位置: 首页 > 知识库问答 >
问题:

如何移交特定参数

盖锐
2023-03-14

假设我有以下类及其接口

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”已知的参数“value”?

在我想要这么做之前

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

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

但是现在我正在尝试我们依赖反转和依赖注入,最终出现了上面描述的问题。

共有1个答案

齐乐逸
2023-03-14

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

builder.Register((comCont, parameters) => new MyClass(123))
  .As<IMyClass>()
  .InstancePerLifetimeScope();
 类似资料:
  • 是否可以(以及如何)指定依赖于另一个给定参数的值的附加参数? 我有一个电话 ,它定义了要设置的付款方式。 现在:如果是直接借记的,则允许(并且需要)更多参数,例如和。如果是其他参数,例如则需要其他参数。 我想摆脱长参数列表(因为这里遗漏了更多参数),但如上所述对它们进行分组,并记录某些参数仅适用于特殊类型是必需的(并且允许的)。 有什么方法可以描述这个吗? 有没有一种方法可以像一个定义中的所有直接

  • 进入考勤打卡-设置-“我是考勤负责人”-“移交考勤负责人权限”-选择需要移交的成员

  • 我在gradle中使用flyway,我在数据库控制台中手动运行了其中一个迁移,我想运行flyway,但告诉它忽略所有其他迁移版本之间的一个特定迁移版本。可以这样做吗?

  • 我需要把一个项目交给第三个人。该项目使用Maven进行依赖管理,我们安装了一个Nexus存储库管理器。 我认为使用dependency:go offline plugin/goal like生成包含项目所需的所有依赖项的存储库是很容易的 此命令将按预期创建存储库。我将此存储库复制到目标计算机,并将localRepository(settings.xml)设置到存储库文件夹。 尝试在目标计算机上构建

  • 我正在尝试用java制作一个小游戏来完成任务。 我们需要在JFrame窗口中有一个可调整大小的网格,其中包含nxn(n=一些合理的数字,如5或7)字段(在这种情况下,每个字段都是一个按钮),在该字段上有以下规则: 中间的按钮是一个“黑洞”,有两个玩家。每个玩家有N-1艘飞船供他们使用,他们必须将它们移入黑洞。第一个做到这一点的玩家获胜。两个玩家的飞船都是对角排列的,朝向和远离中间(黑洞)。 诀窍是