如何在 ASPNETCore 中的抽象 class 中获取 HttpContext

How can I get HttpContext inside an abstract class in ASPNETCore

我有以下存储库:

public class TestRepository : WebCaller<Data>, ITestRepository
    {
        string connString = this.GetConnectionString();

       .... some code here
}

在我的存储库中,我可以Dependency Injection构造函数没有问题

在我的摘要中 class WebCaller 我需要以某种方式访问​​ HttpContext,我读到你可以 Inject IHttpContextAccessor 访问到上下文,但因为这是一个 Abstract class,它也存在于 Web 项目之外,所以我没有构造函数。

我正在尝试这样做:

 public abstract class WebCaller<T> : WebRequest, IDisposable
    {
        //[Inject]
        public ITestRepository TestRepo
        {
            get
            {
                return this.HttpContext.RequestServices.GetRequiredService<ITestRepository >();
            }
        }

        ..... more code here
}

正在尝试使用 Inject 属性,但正在读取不再可用的属性,因此应该通过其他方式将 HttContext 传递给摘要 class。

你可以在你的摘要上有一个构造函数 class。只需向其中注入 IHttpContextAccessor 即可。然后任何派生的 class 也将采用 IHttpContextAccessor 并将其传递给它的 base 构造函数(您的抽象 class 构造函数)。您可以使抽象 class 构造函数 protected.

喜欢:

public abstract class WebCaller<T> : WebRequest, IDisposable
{
    protected WebCaller(IHttpContextAccessor contextAccessor)
    {
    }
}


public class TestRepository : WebCaller<Data>, ITestRepository
{
    public TestRepository(IHttpContextAccessor contextAccessor) : base(contextAccessor)
    {
    }

    string connString = this.GetConnectionString();
    .... some code here
}