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

Is there a way to resolve or configure the container to resolve a default object if one isn't found?

我希望能够注入实现 IService<in T>.

DefaultService 对象

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

public FunClient(IDefaultService<FunModel> service) { ... }

但是我没有开发 FunService : IService<FunModel>,我希望能够告诉 Autofac 不要抛出异常,而是 resolve/inject 一个 DefaultService 实例。

您要查找的是开放泛型类型的注册。您必须为 IDefaultService<T> 创建一个 Null Object 实现并使用 RegisterGeneric 注册它,如下所示:

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

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