【发布时间】:2021-05-06 09:05:22
【问题描述】:
我不知道如何在抽象类中使用依赖注入。让我用一个简单的例子告诉你我的问题:
public abstract class Animal {
public abstract void Move();
public void Sleep()
{
restService.StartSleeping(1000); //how to get this service here?
}
}
public class Cat : Animal
{
public readonly IMotionService _motionService;
public Cat(IMotionService motionService)
{
_motionService = motionService;
}
public override void Move()
{
_motionService.Run();
}
}
public class Bird : Animal
{
public readonly IMotionService _motionService;
public Bird(IMotionService motionService)
{
_motionService = motionService;
}
public override void Move()
{
_motionService.Fly();
}
}
每只动物都以不同的方式移动,因此Move() 函数在每个派生类中单独实现。正如您可能注意到的,整个实现来自motionService。
另一方面,所有动物都以相同的方式睡觉,所以我想将Sleep() 实现放在一个基本抽象类中以避免重复代码,但我不能将我的restService 与Sleep 实现一起使用,因为我没有'不知道如何将服务类注入抽象类。
我想过IServiceProvider,但它也应该注入。
【问题讨论】:
-
您将
restService注入Cat和Birdctors,并将其传递给Animalctors
标签: c# .net-core dependency-injection abstract-class