次の方法で共有


MethodBuilder.AddDeclarativeSecurity メソッド

このメソッドに宣言セキュリティを追加します。

Public Sub AddDeclarativeSecurity( _
   ByVal action As SecurityAction, _   ByVal pset As PermissionSet _)
[C#]
public void AddDeclarativeSecurity(SecurityActionaction,PermissionSetpset);
[C++]
public: void AddDeclarativeSecurity(SecurityActionaction,PermissionSet* pset);
[JScript]
public function AddDeclarativeSecurity(
   action : SecurityAction,pset : PermissionSet);

パラメータ

  • action
    実行するセキュリティ アクション (Demand、Assert など)。
  • pset
    アクションが適用する一連のアクセス許可。

例外

例外の種類 条件
ArgumentOutOfRangeException action が無効です。 RequestMinimumRequestOptional 、および RequestRefuse が無効です。
InvalidOperationException 格納している型が、 CreateType を使用して作成されました。または、アクセス許可セット pset に、AddDeclarativeSecurity で既に追加されているアクションが含まれています。
ArgumentNullException pset が null 参照 (Visual Basic では Nothing) です。

使用例

[Visual Basic, C#, C++] AddDeclarativeSecurity を使用して、無制限のアクセス許可をメソッドの呼び出し元に対して要求する方法については、次のコード例を参照してください。

 
' myModBuilder is an instance of ModuleBuilder.
' Note that for the use of PermissionSet and SecurityAction,
' the namespaces System.Security and System.Security.Permissions
' should be included.
Dim myTypeBuilder As TypeBuilder = myModBuilder.DefineType("MyType", _
                        TypeAttributes.Public)

Dim myMethod1 As MethodBuilder = myTypeBuilder.DefineMethod("MyMethod", _
                       MethodAttributes.Public, _
                       GetType(Integer), _
                       New Type() {GetType(Integer), GetType(Integer)})

Dim myMethodPermissions As New PermissionSet(PermissionState.Unrestricted)

myMethod1.AddDeclarativeSecurity(SecurityAction.Demand, myMethodPermissions)


[C#] 
// myModBuilder is an instance of ModuleBuilder.
// Note that for the use of PermissionSet and SecurityAction,
// the namespaces System.Security and System.Security.Permissions
// should be included.

TypeBuilder myTypeBuilder = myModBuilder.DefineType("MyType",
                    TypeAttributes.Public);

                    
MethodBuilder myMethod1 = myTypeBuilder.DefineMethod("MyMethod",
                    MethodAttributes.Public, 
                    typeof(int),
                    new Type[] 
                    {typeof(int), typeof(int)});    

PermissionSet myMethodPermissions = new PermissionSet(
            PermissionState.Unrestricted);

myMethod1.AddDeclarativeSecurity(SecurityAction.Demand,
                 myMethodPermissions);


[C++] 
// myModBuilder is an instance of ModuleBuilder.
// Note that for the use of PermissionSet and SecurityAction,
// the namespaces System::Security and System::Security::Permissions
// should be included.

TypeBuilder*  myTypeBuilder = myModBuilder->DefineType(
   S"MyType",
   TypeAttributes::Public);

Type* temp0 [] = {__typeof(int), __typeof(int)};
MethodBuilder*  myMethod1 = myTypeBuilder->DefineMethod(
   S"MyMethod",
   MethodAttributes::Public,
   __typeof(int),
   temp0);

PermissionSet* myMethodPermissions = new PermissionSet(PermissionState::Unrestricted);

myMethod1->AddDeclarativeSecurity(
   SecurityAction::Demand,
   myMethodPermissions);

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

MethodBuilder クラス | MethodBuilder メンバ | System.Reflection.Emit 名前空間