AttributeUsage在MVC4中的作用是什么
本文关键字:作用 是什么 MVC4 AttributeUsage | 更新日期: 2023-09-27 18:01:14
在我的示例代码中,我有以下内容:
namespace WebUx.Filters
{
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public sealed class InitializeSimpleMembershipAttribute : ActionFilterAttribute
{
private static SimpleMembershipInitializer _initializer;
private static object _initializerLock = new object();
private static bool _isInitialized;
public override void OnActionExecuting(ActionExecutingContext filterContext)
有人能向我解释一下这是怎么回事吗?这是自动附加到每个类方法还是仅附加到控制器类?我同时使用MVC和web api。它还会附加到web api方法吗?
AttributeUsage
不是MVC特有的。它描述了可以在何处以及如何使用属性。
在大多数(所有?(情况下,编译器将强制执行这些约束。
然而,没有什么"神奇"的事情发生;您仍然需要用属性装饰类/成员,以便它可以执行任何操作。换句话说,它不会自动应用于所有类型或成员。*
另请参阅:http://msdn.microsoft.com/en-us/library/tw5zxet9(v=vs.110(.aspx
*Inherited
属性提供的自动化程度非常有限。请参见继承如何为属性工作
确定如何使用自定义属性类。AttributeUsage是一个可以应用于自定义属性定义的属性,用于控制如何应用新属性。
因此,它基本上为编译器提供了一些关于将要实现的属性类的额外信息。
您在以下位置有几个优秀的示例:http://msdn.microsoft.com/en-us/library/tw5zxet9(v=vs.100(.aspx
它的作用与所有其他类型的应用程序完全相同(没有特殊的MVC行为(-指定可以使用特定属性的位置。
AttributeUsage规定了在何处以及如何使用属性。因此,您的示例可以应用于类或方法,但每个实体只能应用一次。
它不会自动附加到任何类。你必须明确地自己去做。
请参阅AttributeUsage上的C#编程指南:http://msdn.microsoft.com/en-us/library/tw5zxet9(v=vs.80(.aspx