命令式安全性

命令式安全性語法會為您想叫用的使用權限物件建立一個新執行個體,而發出一個安全性呼叫。 您可以使用命令式語法來執行需求和覆寫,但不可用來執行要求。

在執行安全性呼叫之前,您 必須初始化使用權限物件的狀態資料,使它可以代表您所需要的特定形式使用權限。 例如,當建立一個 FileIOPermission 物件時,您可以使用建構函式 (Constructor) 來初始化 FileIOPermission 物件,表示它可以不受限制地存取所有的檔案或不能存取檔案。 或者,您可以使用不同的 FileIOPermission 物件,傳遞一個您想讓物件代表的存取型別 (即讀取、附加或寫入),以及您想讓物件保護的檔案。

除了使用命令式安全性語法以叫用單一的安全性物件外,您也可以用它在使用權限集合中初始化使用權限群組。 例如,要在一個方法的多個使用權限上執行 assert 呼叫時,這個方法是唯一可靠的方式。 請使用 PermissionSetNamedPermissionSet 類別建立使用權限群組,然後呼叫適當的方法以叫用需要的安全性呼叫。

您可以使用命令式語法來執行需求和覆寫,但不可用來執行要求。 當您只需要在 Run Time 時初始化使用權限狀態時,您可以使用命令式語法來執行需求和覆寫,而不使用宣告式語法。 例如,假設您想確認呼叫端擁有讀取某一檔案的使用權限,但是在 Run Time 之前無法知道該檔案的名稱,請使用命令式需求。 當您需要在 Run Time 時決定是否有條件限制存在,並且依據測試的結果來產生安全性要求 (或不產生),您也可以選擇使用命令式檢查而不使用宣告式檢查。

以下的程式碼片段將說明要求程式碼的呼叫端必須擁有自訂使用權限 MyPermission 所使用的命令式語法。 這個使用權限是任意指定的自訂使用權限,並不存在於 .NET Framework 中。 範例將在 MyMethod 中建立一個新執行個體 MyPermision,使用安全性呼叫保護這個方法。

Public Class MyClass1
   
   Public Sub New()

   End Sub
   
   Public Sub MyMethod()
      'MyPermission is demanded using imperative syntax.
      Dim Perm As New MyPermission()
      Perm.Demand()
      'This method is protected by the security call.
   End Sub
   
   Public Sub YourMethod()
      'YourMethod 'This method is not protected by the security call.
   End Sub
End Class
public class MyClass {
   public MyClass(){
    
   }

   public void MyMethod() {
       //MyPermission is demanded using imperative syntax.
       MyPermission Perm = new MyPermission();
       Perm.Demand();
       //This method is protected by the security call.
   }

   public void YourMethod() {
       //This method is not protected by the security call.
   }
}

請參閱

參考

FileIOPermission

SystemSecurityPermissionSet 類別

NamedPermissionSet

概念

使用 Assert 方法

其他資源

程式碼存取安全性