HttpPost特性剖析

      [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    public abstract class ActionMethodSelectorAttribute : Attribute
    {


    }


    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    public sealed class HttpPostAttribute : ActionMethodSelectorAttribute
    {
        //private static readonly AcceptVerbsAttribute _innerAttribute = new AcceptVerbsAttribute(HttpVerbs.Post);


        //public override bool IsValidForRequest(ControllerContext controllerContext, MethodInfo methodInfo)
        //{
        //    return _innerAttribute.IsValidForRequest(controllerContext, methodInfo);
        //}
        public HttpPostAttribute()
        {


        }
    }


    [AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
    public sealed class AcceptVerbsAttribute : ActionMethodSelectorAttribute
    {
        public AcceptVerbsAttribute(HttpVerbs verbs)
        {


        }
        public AcceptVerbsAttribute(params string[] verbs)
        {
            if (verbs == null || verbs.Length == 0)
            {
                //throw new ArgumentException(MvcResources.Common_NullOrEmpty, "verbs");
            }


            //Verbs = new ReadOnlyCollection<string>(verbs);
        }
    }




    public class B
    {
        [AcceptVerbs("get","put","post")]
        [HttpPost]
        public int c()
        {
            return 0;
        }
    }




    public enum HttpVerbs
    {
        Get = 1 << 0,
        Post = 1 << 1,
        Put = 1 << 2,
        Delete = 1 << 3,
        Head = 1 << 4,
        Patch = 1 << 5,
        Options = 1 << 6,
    }


    public class ABC
    {
        public int A()
        {
            return 0;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            
            MethodInfo[] allMethods =typeof(B).GetMethods(BindingFlags.InvokeMethod | BindingFlags.Instance | BindingFlags.Public);
            foreach (MethodInfo methodinfo in allMethods)
            {
                ReadOnlyCollection<ActionMethodSelectorAttribute> rn=new ReadOnlyCollection<ActionMethodSelectorAttribute>((ActionMethodSelectorAttribute[])methodinfo.GetCustomAttributes(typeof(ActionMethodSelectorAttribute),inherit:true));
            }
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值