Share via


CodeAccessPermission.Union(IPermission) 메서드

정의

파생된 클래스에서 재정의되는 경우 현재 사용 권한 및 지정한 사용 권한을 합한 사용 권한을 만듭니다.

public:
 virtual System::Security::IPermission ^ Union(System::Security::IPermission ^ other);
public virtual System.Security.IPermission Union (System.Security.IPermission other);
abstract member Union : System.Security.IPermission -> System.Security.IPermission
override this.Union : System.Security.IPermission -> System.Security.IPermission
Public Overridable Function Union (other As IPermission) As IPermission

매개 변수

other
IPermission

현재 사용 권한과 결합할 사용 권한입니다. 현재 사용 권한과 동일한 형식이어야 합니다.

반환

현재 사용 권한 및 지정한 사용 권한의 합을 나타내는 새 사용 권한입니다.

구현

예외

other 매개 변수는 null이 아닌 경우. 이 메서드는 null을 전달한 경우 이 수준에서만 지원됩니다.

예제

다음 코드 예제에서는 재정의를 보여 주는 Union 메서드입니다. 이 코드 예제는에 대해 제공 된 큰 예제의 일부는 CodeAccessPermission 클래스입니다.

public:
   virtual IPermission^ Union( IPermission^ target ) override
   {
#if ( debug ) 
      Console::WriteLine( "************* Entering Union *********************" );
#endif 

      if ( target == nullptr )
      {
         return this;
      }

#if ( debug ) 
      Console::WriteLine( "This is = {0}", ((NameIdPermission)this).Name );
      Console::WriteLine( "Target is {0}", ((NameIdPermission)target).m_Name );
#endif 

      if (  !VerifyType( target ) )
      {
         throw gcnew ArgumentException( String::Format( "Argument_WrongType", this->GetType()->FullName ) );
      }

      NameIdPermission^ operand = dynamic_cast<NameIdPermission^>(target);

      if ( operand->IsSubsetOf( this ) )
      {
         return this->Copy();
      }
      else if ( this->IsSubsetOf( operand ) )
      {
         return operand->Copy();
      }
      else
      {
         return nullptr;
      }
   }
        public override IPermission Union(IPermission target)
        {
#if(debug)
            Console.WriteLine ("************* Entering Union *********************");
#endif
            if (target == null)
            {
                return this;
            }
#if(debug)
            Console.WriteLine ("This is = " + (( NameIdPermission)this).Name);
            Console.WriteLine ("Target is " + (( NameIdPermission)target).m_Name);
#endif
            if (!VerifyType(target))
            {
                throw new ArgumentException (String.Format ("Argument_WrongType", this.GetType ().FullName));
            }

             NameIdPermission operand = ( NameIdPermission)target;

            if (operand.IsSubsetOf (this)) return this.Copy ();
            else if (this.IsSubsetOf (operand)) return operand.Copy ();
            else
                return null;
        }
        Public Overrides Function Union(ByVal target As IPermission) As IPermission
#If (Debug) Then

            Console.WriteLine("************* Entering Union *********************")
#End If
            If target Is Nothing Then
                Return Me
            End If
#If (Debug) Then
            Console.WriteLine(("This is = " + CType(Me, NameIdPermission).Name))
            Console.WriteLine(("Target is " + CType(target, NameIdPermission).m_name))
#End If
            If Not VerifyType(target) Then
                Throw New ArgumentException(String.Format("Argument_WrongType", Me.GetType().FullName))
            End If

            Dim operand As NameIdPermission = CType(target, NameIdPermission)

            If operand.IsSubsetOf(Me) Then
                Return Me.Copy()
            ElseIf Me.IsSubsetOf(operand) Then
                Return operand.Copy()
            Else
                Return Nothing
            End If
        End Function 'Union

설명

에 대한 호출 Union 의 결과는 현재 권한과 지정된 사용 권한으로 표시되는 모든 작업을 나타내는 권한입니다. 사용 권한을 통과하는 모든 요구는 해당 공용 구조체를 통과합니다.

상속자 참고

파생 클래스에서 이 메서드를 재정의해야 합니다. 매개 변수 null값이 인 경우 사용 권한의 복사본을 other 반환해야 합니다.

적용 대상