繁体   English   中英

Autofac最佳做法传递参数

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM