如果找不到默认对象,有没有办法解析或配置容器以解析默认对象?
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<>));
我希望能够注入实现 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<>));