Как применить ИЛИ в PrincipalPermission в базовом и производном классе

У меня есть базовый класс.

[PrincipalPermission(SecurityAction.Demand, Role = "Admin")]
public class Base
{

}

и получил один.

[PrincipalPermission(SecurityAction.Demand, Role = "Developer")]
public class Derived : Base
{

}

Я хочу позволить пользователю с правами "Разработчик" создать объект Derived. Но я не могу сделать, так как базовый класс имеет разрешение администратора.

Администратор должен иметь возможность создавать объекты всех производных классов. Поэтому я хочу поставить разрешение в базовом классе для администратора.

Как я могу решить эту проблему.

1 ответ

Причина того, что это не работает, заключается в том, что Base класс создается до Derived учебный класс. И как только администраторы могут вызывать Base класс у вас нет возможности позволить Role=Developer создать базовый объект.

Однако в этом сценарии вы можете ввести 2 конструктора в базовый класс, один из которых ограничен Admin и, возможно, защищенный, ограниченный Developer, Затем вам придется позвонить в c'or для Developer явно из Derived учебный класс.

Тем не менее, я действительно не рекомендовал бы делать это. Я бы предпочел ввести фабричный класс или метод и ограничить создание там.

Другие вопросы по тегам