CodeAccessPermission.Union(IPermission) 方法   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
当在派生类中重写时,则创建属于当前权限与指定权限的并集的权限。
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.IPermissionPublic 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 ,则应返回权限的副本。