我正在寻找以下问题的可能解决方案。
我有一个基类,它具有一个依赖项,我目前使用属性注入来满足该依赖项。
public class BaseClass {
IService SomeService { get; set; }
}
我有多个继承自该基类的类。
public class DerivedClass : BaseClass, IDerivedClass {
}
我使用以下内容进行注入。
builder.RegisterType<DerivedClass>().As<IDerivedClass>().OnActivated(e => e.Instance.SomeService = e.Context.Resolve<IService>());
我对扩展基类的大约 12 个其他类执行此操作。有没有办法让任何扩展 BaseClass 的类都能获得我的 IService 注册,而无需为每个注册设置激活事件?像这样工作正常,但只是想清理注册。
只需使用构造函数注入即可。为您的类创建带有参数的构造函数,例如
public DerivedClass(IServiceOne service1, IService2 service2)
{
this._service1 = service1;
this._service2 = service2;
}
并让autofac自动完成他的工作,就像
builder.RegisterType<T>();
十年后,现在您可以使用
required
属性来启用自动注入,而无需在构造函数中添加参数:https://autofac.readthedocs.io/en/latest/register/prop-method-injection.html#required-properties