다음을 통해 공유


MethodBuilder.AddDeclarativeSecurity(SecurityAction, PermissionSet) 메서드

정의

이 메서드에 선언적 보안을 추가합니다.

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

요청, 어설션 등과 같은 수행할 보안 작업입니다.

pset
PermissionSet

작업이 적용되는 사용 권한 집합입니다.

예외

action이 유효하지 않습니다(RequestMinimum, RequestOptionalRequestRefuse가 유효하지 않음).

포함하는 형식을 CreateType()을 사용하여 만들었습니다.

또는

사용 권한 집합 pset에 이전에 AddDeclarativeSecurity(SecurityAction, PermissionSet)에 의해 추가된 작업이 포함되어 있습니다.

또는

현재 메서드에 대해 IsGenericMethod 속성은 true이지만 IsGenericMethodDefinition 속성은 false입니다.

pset이(가) null인 경우

예제

아래 코드 샘플에서는 메서드의 호출자가 무제한 권한을 갖도록 요구하는 의 컨텍스트 사용을 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.

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

array<Type^>^ temp0 = {int::typeid, int::typeid};
MethodBuilder^ myMethod1 = myTypeBuilder->DefineMethod( "MyMethod",
                           MethodAttributes::Public,
                           int::typeid, temp0 );

PermissionSet^ myMethodPermissions = gcnew PermissionSet(
                                     PermissionState::Unrestricted );

myMethod1->AddDeclarativeSecurity( SecurityAction::Demand,
                                   myMethodPermissions );
// myModBuilder is an instance of ModuleBuilder.

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);
' 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)

설명

AddDeclarativeSecurity 는 각 호출에서 보안 작업(예: Demand, Assert및 )과 Deny작업이 적용되는 사용 권한 집합을 지정하여 여러 번 호출할 수 있습니다.

참고

.NET Framework 버전 1.0, 1.1 및 2.0에서는 메서드를 사용하여 AddDeclarativeSecurity 메서드에 적용된 선언적 보안 특성이 이전 XML 메타데이터 형식으로 저장됩니다. 선언적 보안 특성 내보내기 를 참조하세요.

적용 대상