c# - 应用依赖注入时如何使用子类
问题描述
这是界面
public interface IBaseWorker
{
Task<WorkResult> IntializeWork();
Task<WorkResult> DoWork();
Task<WorkResult> SendEmail();
}
这是我的基类。
public abstract class BaseWorker : IBaseWorker
{
private readonly ILogger _logger;
protected readonly IDatabaseCommonService _databaseCommonService;
protected List<ClientConfigurations> clientConfigurations;
public BaseWorker(ILogger logger, IDatabaseCommonService databaseCommonService)
{
_databaseCommonService = databaseCommonService;
_logger = logger;
}
public virtual async Task<WorkResult> IntializeWork()
{
Do something...
}
public abstract Task<WorkResult> DoWork();
public abstract Task<WorkResult> SendEmail();
}
这是我的孩子班。
public class ChildWorker : BaseWorker
{
public ChildWorker(
ILogger<ChildWorker> logger,
IDatabaseCommonService databaseCommonService) : base(logger, databaseCommonService)
{
}
public override Task<WorkResult> DoWork()
{
throw new NotImplementedException();
}
public override Task<WorkResult> SendEmail()
{
throw new NotImplementedException();
}
}
现在我想在另一个类中使用这个子类。请告诉我最好的方法。我没有为这个子类创建接口。我想使用依赖注入。没有接口可以用吗?
public class MyClass : IMyClass
{
private readonly ChildWorker _childWorker;
public MyClass(ChildWorker childWorker){
_childWorker = childWorker
}
public void method(){
_childWorker.IntializeWork();
}
}
如果这不行,有人可以告诉我一种方法。
解决方案
是的,支持简单地注入一个具体的类。如果您的课程不会导致测试目的出现问题,或者调用者出于任何原因根本不需要进行测试,那么没有什么能阻止您这样做。