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在MVC4中的作用是什么

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