TypeBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
この型に宣言セキュリティを追加します。
public:
void AddDeclarativeSecurity(System::Security::Permissions::SecurityAction action, System::Security::PermissionSet ^ pset);
public void AddDeclarativeSecurity (System.Security.Permissions.SecurityAction action, System.Security.PermissionSet pset);
member this.AddDeclarativeSecurity : System.Security.Permissions.SecurityAction * System.Security.PermissionSet -> unit
Public Sub AddDeclarativeSecurity (action As SecurityAction, pset As PermissionSet)
パラメーター
- action
- SecurityAction
Demand、Assert などの実行されるセキュリティ アクション。
- pset
- PermissionSet
アクションが適用されるアクセス許可のセット。
例外
action
が正しくありません (RequestMinimum
、RequestOptional
、RequestRefuse
が正しくない)。
含んでいる型は CreateType() を使用して作成されています。
- または -
アクセス許可のセット pset
に、AddDeclarativeSecurity
によって以前に追加されたアクションが含まれています。
pset
が null
です。
例
次の例では、 メソッドをAddDeclarativeSecurity
使用して、EmittedExample.dll という名前のアセンブリ内の というMyDynamicClass
名前の動的型に、 フラグを使用SecurityPermissionFlag.ControlEvidenceして のセキュリティ要求SecurityPermissionを追加する方法を示します。 この例では、コンソール出力は生成されません。実行後、 Ildasm.exe (IL 逆アセンブラー) を使用して EmittedExample.dll を調べることができます。 で MyDynamicClass
ステートメントを .class public auto ansi
開き、宣言型のアクセス許可を表示します。
using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;
using namespace System::Security;
using namespace System::Security::Permissions;
int main()
{
// Create a simple name for the assembly; create the assembly and module.
AssemblyName^ myAssemblyName = gcnew AssemblyName("EmittedAssembly");
AssemblyBuilder^ myAssemblyBuilder =
AppDomain::CurrentDomain->DefineDynamicAssembly( myAssemblyName, AssemblyBuilderAccess::RunAndSave );
ModuleBuilder^ myModuleBuilder =
myAssemblyBuilder->DefineDynamicModule( "EmittedAssembly", "EmittedAssembly.dll");
// Define a public class named "MyDynamicClass" in the assembly.
TypeBuilder^ myTypeBuilder = myModuleBuilder->DefineType( "MyDynamicClass", TypeAttributes::Public );
// Create a permission set and add a security permission
// with the ControlEvidence flag.
//
PermissionSet^ myPermissionSet = gcnew PermissionSet(PermissionState::None);
myPermissionSet->AddPermission(
gcnew SecurityPermission(SecurityPermissionFlag::ControlEvidence));
// Add the permission set to the MyDynamicClass type,
// as a declarative security demand.
//
myTypeBuilder->AddDeclarativeSecurity(SecurityAction::Demand, myPermissionSet);
Type^ myType = myTypeBuilder->CreateType();
myAssemblyBuilder->Save("EmittedAssembly.dll");
}
using System;
using System.Reflection;
using System.Reflection.Emit;
using System.Security;
using System.Security.Permissions;
namespace CustomAttribute_Sample
{
public class MyApplication
{
static void Main()
{
// Create a simple name for the assembly, and create the assembly and module.
AssemblyName myAssemblyName = new AssemblyName("EmittedAssembly");
AssemblyBuilder myAssemblyBuilder =
AppDomain.CurrentDomain.DefineDynamicAssembly(myAssemblyName, AssemblyBuilderAccess.RunAndSave);
ModuleBuilder myModuleBuilder =
myAssemblyBuilder.DefineDynamicModule("EmittedAssembly", "EmittedAssembly.dll");
// Define a public class named "MyDynamicClass" in the assembly.
TypeBuilder myTypeBuilder = myModuleBuilder.DefineType("MyDynamicClass",
TypeAttributes.Public);
// Create a permission set and add a security permission
// with the ControlEvidence flag.
//
PermissionSet myPermissionSet = new PermissionSet(PermissionState.None);
myPermissionSet.AddPermission(
new SecurityPermission(SecurityPermissionFlag.ControlEvidence));
// Add the permission set to the MyDynamicClass type,
// as a declarative security demand.
//
myTypeBuilder.AddDeclarativeSecurity(SecurityAction.Demand, myPermissionSet);
Type myType = myTypeBuilder.CreateType();
myAssemblyBuilder.Save("EmittedAssembly.dll");
}
}
}
Imports System.Reflection
Imports System.Reflection.Emit
Imports System.Security
Imports System.Security.Permissions
Namespace CustomAttribute_Sample
Class MyApplication
Shared Sub Main()
' Create a simple name for the assembly; create the assembly and the module.
Dim myAssemblyName As New AssemblyName("EmittedAssembly")
Dim myAssemblyBuilder As AssemblyBuilder = _
AppDomain.CurrentDomain.DefineDynamicAssembly( _
myAssemblyName, AssemblyBuilderAccess.RunAndSave)
Dim myModuleBuilder As ModuleBuilder = _
myAssemblyBuilder.DefineDynamicModule("EmittedAssembly", "EmittedAssembly.dll")
' Define a public class named "MyDynamicClass" in the assembly.
Dim myTypeBuilder As TypeBuilder = _
myModuleBuilder.DefineType("MyDynamicClass", TypeAttributes.Public)
' Create a permission set and add a security permission
' with the ControlEvidence flag.
'
Dim myPermissionSet As New PermissionSet(PermissionState.None)
Dim ce As New SecurityPermission(SecurityPermissionFlag.ControlEvidence)
myPermissionSet.AddPermission(ce)
' Add the permission set to the MyDynamicClass type,
' as a declarative security demand.
'
myTypeBuilder.AddDeclarativeSecurity(SecurityAction.Demand, myPermissionSet)
Dim myType As Type = myTypeBuilder.CreateType()
myAssemblyBuilder.Save("EmittedAssembly.dll")
End Sub
End Class
End Namespace
注釈
AddDeclarativeSecurity
は、セキュリティ アクション (Demand、Assert、Deny など) とアクションに適用されるアクセス許可のセットを指定する呼び出しごとに複数回呼び出すことができます。
注意
.NET Framework バージョン 1.0、1.1、および 2.0 では、このメソッドを使用して型に適用される宣言型のセキュリティ属性は、古い XML メタデータ形式で格納されます。
適用対象
.NET