2012-12-28 1 views
0

J'ai une classe de base.Comment appliquer OU dans PrincipalPermission dans la classe de base et de dérivation

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

} 

et une dérivée.

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

} 

Je veux laisser l'utilisateur avec des droits "Developer" pour créer un objet de Derived. Mais je suis incapable de faire comme la classe de base a la permission d'admin.

L'administrateur devrait être capable de créer l'objet de toutes les classes dérivées. Donc je veux mettre la permission dans la classe de base pour l'admin.

Comment puis-je résoudre ce problème?

Répondre

0

La raison pour laquelle cela ne fonctionne pas est que la classe Base est créée avant la classe Derived. Et comme seuls les administrateurs peuvent appeler la classe Base, vous n'avez aucun moyen de laisser le Role=Developer créer l'objet de base.

Vous pouvez toutefois introduire 2 constructeurs dans ce scénario dans la classe de base, un limité à Admin et éventuellement un constructeur protégé au Developer. Vous devrez alors appeler le c'tor pour le Developer explicitement de la classe Derived.

Cependant, je ne recommanderais vraiment pas cela. Je préférerais introduire une classe ou une méthode d'usine et restreindre la création là-bas.

Questions connexes