[英]Autofac best practice passing parameters
我已经很长时间没有使用Autofac了,我想知道哪种是注册参数的最佳方法:
使用Register()方法和lamba表达式
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>();
从解析参数文档中了解有关这些主题的更多信息
无论如何,最好的做法是通过单元测试覆盖所有注册,以避免意外结果。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.