Как применить ИЛИ в 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
учебный класс.
Тем не менее, я действительно не рекомендовал бы делать это. Я бы предпочел ввести фабричный класс или метод и ограничить создание там.