CodeAccessPermission::Intersect Method (IPermission^)
When implemented by a derived class, creates and returns a permission that is the intersection of the current permission and the specified permission.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- target
-
Type:
System.Security::IPermission^
A permission to intersect with the current permission. It must be of the same type as the current permission.
Return Value
Type: System.Security::IPermission^A new permission that represents the intersection of the current permission and the specified permission. This new permission is null if the intersection is empty.
Implements
IPermission::Intersect(IPermission^)| Exception | Condition |
|---|---|
| ArgumentException | The target parameter is not null and is not an instance of the same class as the current permission. |
The intersection of two permissions is a permission that describes the set of operations they both describe in common. Only a demand that passes both original permissions will pass the intersection.
Notes to Inheritors:
You must override this method in a derived class.
The following code example shows an override of the Intersect method. This code example is part of a larger example provided for the CodeAccessPermission class.
public: virtual IPermission^ Intersect( IPermission^ target ) override { Console::WriteLine( "************* Entering Intersect *********************" ); if ( target == nullptr ) { return nullptr; } #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 is wrong type.", this->GetType()->FullName ) ); } NameIdPermission^ operand = dynamic_cast<NameIdPermission^>(target); if ( operand->IsSubsetOf( this ) ) { return operand->Copy(); } else if ( this->IsSubsetOf( operand ) ) { return this->Copy(); } else { return nullptr; } }
Available since 1.1