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