我没有长时间使用Autofac,我想知道哪个是注册参数的最佳方式:
使用Register()方法,使用lamba表达式
builder.Register(a => new SomeClass(config))
.As<ISomeClass>();
使用RegisterType()方法和WithParameter()
builder.RegisterType<SomeClass>()
.WithParameter(new NamedParameter("config", config))
.As<ISomeClass>();
第二种方式对我来说看起来更好,但我认为使用它非常危险,因为参数的名称可能会改变。
答案 0 :(得分:1)
使用更适合您需求的方式。如果您不需要太多灵活性,那么请使用第一种方法。但只要SomeClass
依赖关系增长,您可能希望使用更灵活的方法,例如NamedParameter
。
另一个选择是使用命名组件注册,如
builder.RegisterInstance(config).Named<Config>("DefaultConfig");
builder.Register((c, p) => new SomeClass(p.Named<Config>("DefaultConfig")))
.As<ISomeClass>();
中了解有关该主题的更多信息
在任何情况下,最佳做法是通过单元测试覆盖所有注册,以避免意外结果。