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>();
第二种方法对我来说看起来更好,但我想使用它是相当危险的,因为参数的名称可以改变。
使用更适合您需要的方式。如果你不需要太多的灵活性,那么就使用第一种方法。但是一旦SomeClass
依赖关系增加,您可能需要使用更灵活的方法,如NamedParameter
。
builder.RegisterInstance(config).Named<Config>("DefaultConfig");
builder.Register((c, p) => new SomeClass(p.Named<Config>("DefaultConfig")))
.As<ISomeClass>();
查看Resolve Parameters文档
在任何情况下,最佳实践都是通过单元测试覆盖所有注册,以避免意外的结果。