autofacc传递参数的最佳实践

本文关键字:最佳 参数 autofacc | 更新日期: 2023-09-27 18:02:26

我一直没有使用autoface很长一段时间,我想知道哪是注册参数的最佳方式:

  • 使用Register()方法,使用lambda表达式

    builder.Register(a => new SomeClass(config))
           .As<ISomeClass>();
    
  • 使用RegisterType()方法和WithParameter()

        builder.RegisterType<SomeClass>()
               .WithParameter(new NamedParameter("config", config))
               .As<ISomeClass>();
    

第二种方法对我来说看起来更好,但我想使用它是相当危险的,因为参数的名称可以改变。

autofacc传递参数的最佳实践

使用更适合您需要的方式。如果你不需要太多的灵活性,那么就使用第一种方法。但是一旦SomeClass依赖关系增加,您可能需要使用更灵活的方法,如NamedParameter

另一个选择是使用命名组件注册,如
builder.RegisterInstance(config).Named<Config>("DefaultConfig");
builder.Register((c, p) => new SomeClass(p.Named<Config>("DefaultConfig")))
       .As<ISomeClass>();

查看Resolve Parameters文档

在任何情况下,最佳实践都是通过单元测试覆盖所有注册,以避免意外的结果。