c# - 更新基本控制器变量值,但在 ASP.NET Core 中未更新所有派生控制器
问题描述
这是我的BaseController
:
public abstract class BaseController : Controller
{
public Int64 CompanyId { get; set; } // I need to update this property
}
我还有另外 2 个控制器CompanyController
:
public class CompanyController : BaseController
{
public IActionResult ChangeCompany(long CompanyId = 35) //
{
base.CompanyId = CompanyId;
// other code
}
public IActionResult GetCompany() //
{
return base.CompanyId // return 35
}
}
和AccountController
:
public class AccountController : BaseController
{
public IActionResult GetCompany() //
{
return base.CompanyId // return 0
}
}
如何从中获取更新的CompanyId
值AccountController
?
解决方案
你不能。每个对象都是不同的,基类只是其他类扩展的模板。每个new
对象都将创建和维护自己的CompanyId
变量,因此您不能也不应该通过更改另一个来更改一个。
static
如果您只想为所有类提供一个值,请检查关键字public static Int64 CompanyId { get; set; }
基本上是这样的:
public class CompanyController : BaseController
{
public IActionResult ChangeCompany(long CompanyId = 35) //
{
base.CompanyId = CompanyId;
// other code
}
public IActionResult GetCompany() //
{
return base.CompanyId // return 35
}
}
和这个是一样的(虽然没有继承,你甚至不知道这两个类有哪些共同点):
public class CompanyController
{
public Int64 CompanyId { get; set; } // I need to update this property
public IActionResult ChangeCompany(long CompanyId = 35) //
{
base.CompanyId = CompanyId;
// other code
}
public IActionResult GetCompany() //
{
return base.CompanyId // return 35
}
}
推荐阅读
- python - 为什么'return'不会破坏嵌套在函数中的循环?
- python - 如何保留 Azure Cosmos DB 连续令牌
- java - 如何在 HarmonyOS 中检测自定义组件中的双击?
- reactjs - 如何处理每个依赖包的 IE11 兼容性?
- windows - 有什么方法可以让我的 SQLPLUS 脚本的输出看起来更好?
- pandas - 使用 awswrangler 向 S3 对象添加标签?
- html - 是否可以手动操作元素中的 css 断点(无 iframe)?
- vue.js - 构建后 Electron Vue 不读取 JS 代码
- react-native - 我们不能让 react-native-video 播放器播放来自 API 文件服务的视频
- python - 如何使用 pytest-mock 模拟 python 类依赖项?