gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:07:45 25 4
gpt4 key购买 nike

我有以下代码:

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

和:

public class ContentStatusController : ApiBaseController
{

public ContentStatusController(IUow uow)
{
Uow = uow;
}
}

有什么原因导致我无法在 ApiBaseController 中编写 Uow 的分配(使用 IOC)?

我问的原因是因为我正在尝试做一些类似于 Code Camper 应用程序示例的事情,我注意到在该示例中,工作单元是分配总是在 Controller 本身的构造函数中执行,而不是在 ApiBaseConstructor 中执行.在示例中,我看到这是构造函数中唯一完成的事情。

如果我在基本 Controller 中进行分配,那么我该如何编码,并且 Uow 是否仍需要“保护”它才能在继承自 ApiBaseController 的 Controller 中使用?

最佳答案

您的 IOC 容器正在通过构造函数注入(inject)依赖项。如果您想继续使用该机制(某些容器允许例如属性注入(inject),但不是每个人都喜欢这样做)那么您仍然需要在派生类中使用相同的构造函数来将注入(inject)的组件传递给基类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
{
}
}

1因为类不继承构造函数。

关于c# - 为什么在类中设置构造函数来设置基本参数,而我可以在它继承的类中执行相同的操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22778445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com