c# - 在 .net 中删除继承的属性

标签 c# .net attributes

我有一个这样的 ASP.NET MVC Controller

[Authorize]
public class ObjectController : Controller
{
     public ObjectController(IDataService dataService)
     {
         DataService = dataService;
     }
     public IDataService DataService { get;set;}
}

Authorize 属性在框架中定义为“Inherited=true”。所以当我制作下一个 Controller 时:

public class DemoObjectController : ObjectController 
{
    public DemoObjectController(IDataService dataService)
        : base (dataService)
    {
        DataService = new DemoDataService(DataService);
    }
}

它获得了授权属性,但我不想在这里使用它。我希望每个人都可以使用演示对象 Controller ,因为它只使用假数据。

我想我会实现我自己的不被继承的授权属性,因为我找不到任何方法从继承的类中删除该属性。

最佳答案

由于它被标记为继承,在这种情况下您无能为力(因为您无法控制通过反射检查属性的代码)。实现您自己的属性似乎是最实用的选择。

使用 MVC,您通常还可以通过覆盖(On* 方法)实现相同的功能,这可能值得研究。

关于c# - 在 .net 中删除继承的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1109400/

相关文章:

c# - C#中最常用的接口(interface)是什么?

.net - 比较 .Net 和 VB6 应用程序的内存占用

c# - 在 C# 中自动实现的属性默认值

无法识别 C# 属性

c++ - GCC 忽略重写成员函数上的 nodiscard 属性是否正确?

ios - 将许多属性添加到我的 xdatamodel (iOS Core Data)

c# - 自定义setter添加多对多关系.net core

c# - 从 ASP.NET 4.5 应用程序使用需要 WS-Security 的 Web 服务

c# - HttpWebResponse.GetResponse() fiddler 说 "Response Header parsing failed. "

c# - 将图标转换为 Png