具有RegisterType的Autofac中的可选依赖项

时间:2016-05-11 10:03:00

标签: autofac

使用可选参数在autofac中有RegisterType的某种方法吗?即在过去,我们有类似

的东西
builder.Register(c => new Bla(c.ResolveOptional<Blub>())

使用RegisterType显然失败了。

那么,有没有办法呢?可能我只是真的失明了 - .-

2 个答案:

答案 0 :(得分:1)

原来我觉得太复杂了。答案很简单:构造函数中的默认参数。

class Bla
    public Bla(Blub blub = null)

如果类型已注册,Autofac足够明亮,可以填充它们,但只是将它们留下。

答案 1 :(得分:1)

构造函数依赖项不应该是可选的。而是注册一个你不需要任何实现的空实现(a.k.a。a Null Object)。这简化了消费组件,因为它不必处理空值,并且总能期望有一个有效的实现。