使用可选参数在autofac中有RegisterType
的某种方法吗?即在过去,我们有类似
builder.Register(c => new Bla(c.ResolveOptional<Blub>())
使用RegisterType显然失败了。
那么,有没有办法呢?可能我只是真的失明了 - .-
答案 0 :(得分:1)
原来我觉得太复杂了。答案很简单:构造函数中的默认参数。
class Bla
public Bla(Blub blub = null)
如果类型已注册,Autofac足够明亮,可以填充它们,但只是将它们留下。
答案 1 :(得分:1)
构造函数依赖项不应该是可选的。而是注册一个你不需要任何实现的空实现(a.k.a。a Null Object)。这简化了消费组件,因为它不必处理空值,并且总能期望有一个有效的实现。