AttributeUsage在MVC4中做了什么

8 c# asp.net asp.net-mvc asp.net-mvc-3

在我的示例代码中,我有以下内容:

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)
Run Code Online (Sandbox Code Playgroud)

有人可以向我解释这是如何工作的吗?这会自动附加到每个类方法还是仅附加到控制器类?我正在使用MVC和web api.它还会附加到web api方法吗?

Tim*_*ora 9

AttributeUsage不是特定于MVC.它描述了属性的使用位置和方式.

在大多数(所有?)情况下,编译器将强制执行这些约束.

然而,没有任何"神奇"发生; 你仍然需要使用属性来装饰类/成员,因为它可以做任何事情.换句话说,它不会自动应用于所有类型或成员.*

另见:http://msdn.microsoft.com/en-us/library/tw5zxet9(v=vs.110).aspx

*该Inherited物业确实提供非常有限的自动化.请参阅继承如何为Attributes工作?.