C# 为什么要在类中设置构造函数来设置基参数,而我可以在它继承的类中执行相同的操作?

C# 为什么要在类中设置构造函数来设置基参数,而我可以在它继承的类中执行相同的操作?,c#,C#,我有以下代码: public abstract class ApiBaseController : ApiController { protected IUow Uow { get; set; } } 以及: 是否有任何原因导致我无法在ApiBaseController中编码Uow(使用IOC)的分配 我问这个问题的原因是因为我正在尝试做一些类似于Code Camper应用程序示例的事情,我注意到在该示例中,工作单元始终是在控制器本身的构造函数中执行赋值,而不是在ApiBaseCons

我有以下代码:

public abstract class ApiBaseController : ApiController
{
    protected IUow Uow { get; set; }
}
以及:

是否有任何原因导致我无法在ApiBaseController中编码Uow(使用IOC)的分配

我问这个问题的原因是因为我正在尝试做一些类似于Code Camper应用程序示例的事情,我注意到在该示例中,工作单元始终是在控制器本身的构造函数中执行赋值,而不是在ApiBaseConstructor中执行赋值。在我看到的示例中,这是在构造函数中完成的唯一一件事


如果我在基本控制器中进行了分配,那么我如何对其进行编码,Uow还需要“保护”才能在继承自ApiBaseController的控制器中使用它?

您的IOC容器正在通过构造函数注入依赖项。如果您想继续使用该机制(一些容器允许,例如属性注入,但不是每个人都喜欢这样做),那么您仍然需要在派生类中使用相同的构造函数,以便将注入的组件向下传递到基类1

比如:

public abstract class ApiBaseController : ApiController
{
    public ApiBaseController(IUow uow)
    {
        Uow = uow;
    }
    protected IUow Uow { get; private set; }
}
public class ContentStatusController : ApiBaseController
{
    public ContentStatusController(IUow uow) : base(uow) //<-- This is needed
    {
    }
}
公共抽象类ApiBaseController:ApicController
{
公共ApiBaseController(IUow uow)
{
Uow=Uow;
}
受保护的IUow Uow{get;private set;}
}
公共类ContentStatusController:ApiBaseController
{

public ContentStatusController(IUow uow):base(uow)/@Damien_The_unsiver-我想你刚刚回答了我的问题。我想构造函数会被继承。你能不能把你的评论作为一个答案,这样我就可以接受它了?+1:很好的一点规则:
派生类不会继承基类的构造函数
public abstract class ApiBaseController : ApiController
{
    public ApiBaseController(IUow uow)
    {
        Uow = uow;
    }
    protected IUow Uow { get; private set; }
}
public class ContentStatusController : ApiBaseController
{
    public ContentStatusController(IUow uow) : base(uow) //<-- This is needed
    {
    }
}