Не с перечислением, а со строками - вуаля (принудительно выполняется в среде выполнения, даже в режиме полного доверия):
public static class PermissionFlags {
public const string Create = "Create";
}
[PrincipalPermission(SecurityAction.Demand, Role = PermissionFlags.Create)]
public void CreateNew() {
System.Windows.Forms.MessageBox.Show("Created!");
}
Все, что вам нужно сделать сейчас, это представлять пользователя в качестве принципала. Это сделано для вас в ASP.NET, и есть плагин winform (в VS2008 и т. Д.) Для использования ASP.NET для членства. Это может быть настроено для ванильных winforms и WCF, также; на самом базовом уровне, GenericPrincipal
/ GenericIdentity
:
// during login...
string[] roles = { PermissionFlags.Create /* etc */ };
Thread.CurrentPrincipal = new GenericPrincipal(
new GenericIdentity("Fred"), // user
roles);
Но вы можете достаточно легко написать свои собственные основные / идентификационные модели (например, отложенные / кэшированные проверки доступа).