如何使用属性来控制对类的访问?

时间:2019-07-10 10:15:01

标签: c# attributes

我有一个任务,我必须处理不同雇员的类,并且对于每个雇员(类),我必须设置一个受保护级别的属性,并在屏幕上显示系统对每个雇员尝试的反应访问受保护的字段。 管理员不必访问程序员的领域和主管的领域。程序员不必访问主管的领域,而必须访问经理的领域,并且主管具有完全访问权限。 1:我可以引用班级的其他领域吗(经理到主管,经理到程序员等)?如果没有适当的访问权限,我会在控制台中收到一条消息 2:我是否需要使用反射来检查工人的防护等级是否对应?

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
    public class AccessLevelAttribute : System.Attribute
    { 
        public readonly string accessLevel;
        public string AccessLevel
        {
            get { return accessLevel; }
        }
        public AccessLevelAttribute(string accessLevel)
        {
            this.accessLevel = accessLevel;
        }
    }
    [AccessLevel("lower")]
    public class Manager
    {
        public string fild1 = "Manager document";
    }
    [AccessLevel("medium")]
    public class Programmer 
    {
        public string fild2 = "Programmer document";
    }
    [AccessLevel("high")]
    public class Director
    {
        public string fild3 = "Director document";
    }
    class Program
    {
        static void Main(string[] args)
        {
            Programmer programmer = new Programmer();

            MemberInfo type = typeof(Programmer);
            object[] attributes = type.GetCustomAttributes(typeof(AccessLevelAttribute), true);
            foreach (AccessLevelAttribute item in attributes)
            {
                Console.WriteLine(item.accessLevel);
            }
            Console.ReadKey();
        }
    }

0 个答案:

没有答案