And*_*asN 5 .net c# attributes
我有一个像这样的ASP.NET MVC控制器
[Authorize]
public class ObjectController : Controller
{
public ObjectController(IDataService dataService)
{
DataService = dataService;
}
public IDataService DataService { get;set;}
}
Run Code Online (Sandbox Code Playgroud)
Authorize属性在框架中定义为"Inherited = true".所以当我制作下一个控制器时:
public class DemoObjectController : ObjectController
{
public DemoObjectController(IDataService dataService)
: base (dataService)
{
DataService = new DemoDataService(DataService);
}
}
Run Code Online (Sandbox Code Playgroud)
它获取authorize属性,但我不想在这里.我希望Demo Object控制器可供所有人使用,因为它只使用假数据.
我想我将实现自己的Authorize属性,它不会被继承,因为我找不到任何方法从继承的类中删除属性.
由于它被标记为继承,因此在这种情况下您无法做很多事情(因为您不通过反射来控制检查属性的代码).实现自己的属性似乎是最实用的选择.
使用MVC,您通常也可以使用覆盖(On*方法)实现相同的功能,这可能值得研究.