我有一个这样的 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/