IPermission::Intersect Method (IPermission^)
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.
| 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.
The following statements are required to be true for all implementations of the Intersect method. X and Y represent IPermission object references that are not null.
X.Intersect(X) returns a value equal to X.
X.Intersect(Y) returns the same value as Y.Intersect(X).
X.Intersect(null) returns null.
The following code example demonstrates implementing the Intersect method. This code example is part of a larger example provided for the IPermission class.
// Return a new object that contains the intersection
// of 'this' and 'target'.
public:
virtual IPermission^ Intersect(IPermission^ target) override
{
// If 'target' is null, return null.
if (target == nullptr)
{
return nullptr;
}
// Both objects must be the same type.
SoundPermission^ soundPerm = VerifyTypeMatch(target);
// If 'this' and 'target' are unrestricted,
// return a new unrestricted permission.
if (specifiedAsUnrestricted && soundPerm->specifiedAsUnrestricted)
{
return Clone(true, SoundPermissionState::PlayAnySound);
}
// Calculate the intersected permissions.
// If there are none, return null.
SoundPermissionState minimumPermission = (SoundPermissionState)
Math::Min((int) stateFlags, (int) soundPerm->stateFlags);
if ((int)minimumPermission == 0)
{
return nullptr;
}
// Return a new object with the intersected permission value.
return Clone(false, minimumPermission);
}
Available since 1.1