有没有办法解决或配置容器来解决默认对象,如果找不到?

时间:2015-04-28 18:15:50

标签: c# dependency-injection autofac

我希望能够注入一个实现DefaultService的{​​{1}}对象。

例如,如果我有一个构造函数:

IService<in T>

但是我没有开发public FunClient(IDefaultService<FunModel> service) { ... },我希望能够告诉Autofac不抛出异常,而是解析/注入FunService : IService<FunModel>实例。

1 个答案:

答案 0 :(得分:2)

您正在寻找的是开放通用类型的注册。您必须为IDefaultService<T>创建Null Object实施,并使用RegisterGeneric进行注册,如下所示:

public class NullDefaultService<T> : IDefaultService<T> {
   // Implement methods here
}

// registration
builder.RegisterGeneric(typeof(NullDefaultService<>))
    .As(typeof(IDefaultService<>));