C# 通过DI解析私有字段依赖关系

C# 通过DI解析私有字段依赖关系,c#,asp.net-mvc,dependency-injection,C#,Asp.net Mvc,Dependency Injection,我在一个Asp.NETMVC项目上工作,该项目定义了一个自定义抽象控制器基类,未来的控制器应该从该基类继承。控制器定义如下: public abstract class ControllerBase : Controller { private IWorkContextFactory _workContextFactory; private WorkContext _workContext; public WorkContext WorkContext {

我在一个Asp.NETMVC项目上工作,该项目定义了一个自定义抽象控制器基类,未来的控制器应该从该基类继承。控制器定义如下:

public abstract class ControllerBase : Controller
{
    private IWorkContextFactory _workContextFactory;
    private WorkContext _workContext;

    public WorkContext WorkContext
    {
        _workContext = _workContext ?? _workContextFactory.BuildContext();
        return _workContext;
    }
}
WorkContext
类提供有用的信息,如登录用户的id、用户角色等。上面的类以及
WorkContext
类都是在web框架项目中定义的,该项目是一个类库项目。web框架项目被另一个项目引用,该项目是真正的Asp.Net web项目。Asp.Net web项目包含多个类来处理依赖项注入,例如解析器(它是
idependencysolver
MVC接口的一个实现,在应用程序启动时通过
System.web.MVC.dependencysolver.SetResolver
设置为依赖项解析器)

现在我希望解决
IWorkContextFactory
依赖关系。唯一的问题是web框架项目不会引用web项目,因此我无法获取依赖项解析器的实例。我还考虑了属性注入,但首先我必须在web框架项目中添加对Ninject(我使用的DI框架)项目的引用,以使用
[Inject]
属性,其次我必须更改
IWorkContextFactory
的可见性,它应该是私有的


因为我没有办法解决这个问题,所以我现在请求帮助。

听起来web project依赖于web framework,所以web project将负责设置依赖项(而不是相反)。@AndrewS Yes web project必须将依赖项插入web framework项目中。我只是不知道该怎么做,因为构造函数注入不合适,因为我希望类型在不指定特殊构造函数参数的情况下从基控制器继承,而属性注入似乎也不合适。为什么当基类需要构造函数注入,而扩展类将使用它时,构造函数注入不合适它(间接)?@AndrewS问题在于,从ControllerBase类继承的每个类都必须指定一个自定义构造函数,该构造函数接受一个IWorkContextFactory,并将其传递给基构造函数。但由于我希望它是一个隐藏的框架细节,并且我不希望每个子类都知道IWorkContextFactory接口的存在,所以我认为可能有更好的解决方案