Friday, January 17, 2014

Attribute for method level security

   [AttributeUsage(AttributeTargets.Method | AttributeTargets.Property)]
        public class SecurityLevel : Attribute
        {
            private int level;

            public int Level
            {
                get { return level; }
                set { level = value; }
            }
            public SecurityLevel(int level)
            {
                this.level = level;
            }



          public override string ToString()
            {
                string value = "Level : " + level.ToString();
                return value;
            }
        }
       
        class testSecurityLevel
        {
            [SecurityLevel(3)]
            public void A()
            {
            }
            [SecurityLevel(1)]
            public void B()
            {
            }
        }

       
        static void Main(string[] args)
        {


            int lev = 2;
            testSecurityLevel tsl = new testSecurityLevel();
            if (typeof(testSecurityLevel).GetMethods().Where(x => x.Name.Equals("A")).First().GetCustomAttributes(false).Where(x => (x as SecurityLevel) != null).Select(x => x as SecurityLevel).First().Level <= lev)
            {
                tsl.A();
            }

            if (typeof(testSecurityLevel).GetMethods().Where(x => x.Name.Equals("B")).First().GetCustomAttributes(false).Where(x => (x as SecurityLevel) != null).Select(x => x as SecurityLevel).First().Level <= lev)
            {
                tsl.B();
            }



No comments:

Post a Comment