首页 > 解决方案 > 应用依赖注入时如何使用子类

问题描述

这是界面

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();
   } 
}

如果这不行,有人可以告诉我一种方法。

标签: c#.net-coredependency-injection

解决方案


是的,支持简单地注入一个具体的类。如果您的课程不会导致测试目的出现问题,或者调用者出于任何原因根本不需要进行测试,那么没有什么能阻止您这样做。


推荐阅读