Как я могу использовать атрибуты для контроля доступа к классам? - PullRequest
0 голосов
/ 10 июля 2019

У меня есть задача, в которой я должен выполнять классы разных сотрудников, и для каждого сотрудника (класса) я должен установить атрибут с защищенным уровнем и отобразить на экране реакцию системы на попытку каждого сотрудника. получить доступ к защищенному полю. Менеджер не должен иметь доступ к полю программиста и к полю директора. Программист не должен иметь доступ к полю директора, но должен иметь доступ к полю менеджера, и директор имеет полный доступ. 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();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...