C# 使用依赖项注入初始化抽象类对象

C# 使用依赖项注入初始化抽象类对象,c#,dependency-injection,abstract-class,C#,Dependency Injection,Abstract Class,我继承了ApiController,下面是我用依赖项注入重写的ExecuteAsync方法 public abstract class BaseController : ApiController { private IMyService _myService; public PersonModel person; protected BaseController(IMyService myService) { _myService = mySer

我继承了ApiController,下面是我用依赖项注入重写的ExecuteAsync方法

public abstract class BaseController : ApiController
{
    private IMyService _myService;
    public PersonModel person;
    protected BaseController(IMyService myService)
    {
        _myService = myService;
    }

    public override Task<HttpResponseMessage> ExecuteAsync(HttpControllerContext controllerContext, CancellationToken cancellationToken)
    {
        _myService.Initialize(person);
    }
}
这是课堂

public class MyService : IMyService
{
    public HttpResponseMessage Initialize(PersonModel person)
    {
        //Initializing person model from db
        return new HttpResponseMessage(HttpStatusCode.OK);
    }
}

执行此方法时,BaseController类中的person对象仍然为null。我应该更改什么来初始化抽象类中的对象?

请检查此线程,看看这是否回答了您的问题-


您必须适当地注册抽象类的子类

我猜你在做一些类似于
person=newpersonmodel()
内部
Initialize
的事情。那根本行不通。您需要它来返回个人模型,或者(一个难看的解决方法)使用
ref
。您使用的是哪个依赖关系框架?@arungerge autofac您使用运行时数据(
PersonModel
)初始化应用程序组件(
IMyService
)。简言之。这可以通过使用初始化数据的方法以DI友好的方式解决。
public class MyService : IMyService
{
    public HttpResponseMessage Initialize(PersonModel person)
    {
        //Initializing person model from db
        return new HttpResponseMessage(HttpStatusCode.OK);
    }
}