宣言セキュリティ チェックの実行
PrincipalPermission に対する宣言的な確認要求は、コード アクセス許可の場合の宣言的な確認要求と同じように機能します。 確認要求は、それぞれのメソッド、プロパティ、またはイベントだけでなく、クラス レベルでも設定できます。 クラス レベルとメンバー レベルの両方で宣言的な確認要求が設定されると、メンバー レベルの宣言的な確認要求が、クラス レベルの確認要求をオーバーライド (または置換) します。
前のセクションの例における PrivateInfo メソッドを変更したバージョンを次のコード例に示します。 このバージョンでは、宣言セキュリティを使用しています。 PrincipalPermissionAttribute は、メソッドを呼び出すために現在のスレッドが持つ必要のあるプリンシパルを定義します。 必要な名前とロールの SecurityAction.Demand を渡すだけです。
[PrincipalPermissionAttribute(SecurityAction.Demand, Name = "MyUser", Role = "User")]
public static void PrivateInfo()
{
//Print secret data.
Console.WriteLine("\n\nYou have access to the private data!");
}
Public Shared Sub _
<PrincipalPermissionAttribute(SecurityAction.Demand, Name := "MyUser", Role := "User")> _
PrivateInfo()
'Print secret data.
Console.WriteLine(ControlChars.CrLf + "You have access to the private data!")
End Sub
現在のスレッドに正しいプリンシパルが含まれていない場合、このメソッドはセキュリティ例外をスローします。 ユーザーが 1 を入力すると、PrivateInfo メソッドが呼び出され、次のメッセージがコンソールに表示されます。
You have access to the private data!