C# 自定义属性和枚举数
我有一个枚举:C# 自定义属性和枚举数,c#,asp.net-mvc-2,enums,custom-attributes,C#,Asp.net Mvc 2,Enums,Custom Attributes,我有一个枚举: public enum Navigation { Top = 0, Left = 2, Footer = 3 } 我有一个控制器动作: public ActionResult Quotes() { return View(); } 我希望能够装饰我的行为如下: [Navigation.Top] public ActionResult Quotes() { return View(); } 如果想知道如何实现这一点,我可能必须创建一个自
public enum Navigation
{
Top = 0,
Left = 2,
Footer = 3
}
我有一个控制器动作:
public ActionResult Quotes()
{
return View();
}
我希望能够装饰我的行为如下:
[Navigation.Top]
public ActionResult Quotes()
{
return View();
}
如果想知道如何实现这一点,我可能必须创建一个自定义属性,但如何将此枚举合并到其中?一种方法:
public static class Navigation{
public class Top:ActionFilter /*any attribute*/{
//magic
}
public class Left:ActionFilter{
//magic
}
}
[Navigation.Top]
public ActionResult Whatever(){}
如果您确实想使用枚举,恐怕无法将其用作属性。但您可以将其作为参数传递给属性。大概是这样的:
public class NavigationAttribute:Attribute{
public Navigation Place {get;set;}
}
[Navigation(Place=Navigation.Top)]
public ActionResult Whatever(){}
一种方法:
public static class Navigation{
public class Top:ActionFilter /*any attribute*/{
//magic
}
public class Left:ActionFilter{
//magic
}
}
[Navigation.Top]
public ActionResult Whatever(){}
如果您确实想使用枚举,恐怕无法将其用作属性。但您可以将其作为参数传递给属性。大概是这样的:
public class NavigationAttribute:Attribute{
public Navigation Place {get;set;}
}
[Navigation(Place=Navigation.Top)]
public ActionResult Whatever(){}
只能使用从
System.Attribute
class派生的类创建属性批注
因此,不可能直接使用enum
但是,可以将枚举值传递给自定义属性的构造函数。像这样:
enum Navigation
{
Top = 0,
Left = 2,
Footer = 3,
}
class NavigationAttribute: Attribute
{
Navigation _nav;
public NavigationAttribute(Navigation navigation){
_nav = navigation;
}
}
...
[Navigation(Navigation.Top)]
public ActionResult Quotes()
{
return View();
}
只能使用从
System.Attribute
class派生的类创建属性批注
因此,不可能直接使用enum
但是,可以将枚举值传递给自定义属性的构造函数。像这样:
enum Navigation
{
Top = 0,
Left = 2,
Footer = 3,
}
class NavigationAttribute: Attribute
{
Navigation _nav;
public NavigationAttribute(Navigation navigation){
_nav = navigation;
}
}
...
[Navigation(Navigation.Top)]
public ActionResult Quotes()
{
return View();
}
疯狂的。。。我做的差不多,但是,我没有继承ActionFilterAttribute。。。。谢谢你的帮助,这正是我需要的。。。我做的差不多,但是,我没有继承ActionFilterAttribute。。。。THANX对于帮助,这正是我所需要的THANX,这也是一个很好的解决方法。我想,如果您在其他地方使用enum,那么这样做更有意义。thanx,这也是一个很好的解决方法。我想,如果您在其他地方使用enum,那么这样做更有意义。