IPermission.Intersect(IPermission) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Tworzy i zwraca uprawnienie, które jest skrzyżowaniem bieżącego uprawnienia i określonego uprawnienia.
public:
System::Security::IPermission ^ Intersect(System::Security::IPermission ^ target);
public System.Security.IPermission? Intersect (System.Security.IPermission? target);
public System.Security.IPermission Intersect (System.Security.IPermission target);
abstract member Intersect : System.Security.IPermission -> System.Security.IPermission
Public Function Intersect (target As IPermission) As IPermission
Parametry
- target
- IPermission
Uprawnienie do przecinania z bieżącym uprawnieniem. Musi być tego samego typu co bieżące uprawnienie.
Zwraca
Nowe uprawnienie, które reprezentuje przecięcie bieżącego uprawnienia i określonego uprawnienia. To nowe uprawnienie jest null
takie, jeśli skrzyżowanie jest puste.
Wyjątki
Parametr target
nie null
jest i nie jest wystąpieniem tej samej klasy co bieżące uprawnienie.
Przykłady
Poniższy przykład kodu przedstawia implementację Intersect metody. Ten przykład kodu jest częścią większego przykładu podanego IPermission dla klasy.
// 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);
}
// Return a new object that contains the intersection of 'this' and 'target'.
public override IPermission Intersect(IPermission target)
{
// If 'target' is null, return null.
if (target == null) return null;
// Both objects must be the same type.
SoundPermission soundPerm = VerifyTypeMatch(target);
// If 'this' and 'target' are unrestricted, return a new unrestricted permission.
if (m_specifiedAsUnrestricted && soundPerm.m_specifiedAsUnrestricted)
return Clone(true, SoundPermissionState.PlayAnySound);
// Calculate the intersected permissions. If there are none, return null.
SoundPermissionState val = (SoundPermissionState)
Math.Min((Int32)m_flags, (Int32)soundPerm.m_flags);
if (val == 0) return null;
// Return a new object with the intersected permission value.
return Clone(false, val);
}
' Return a new object that contains the intersection of 'this' and 'target'.
Public Overrides Function Intersect(ByVal target As IPermission) As IPermission
' If 'target' is null, return null.
If target Is Nothing Then
Return Nothing
End If
' Both objects must be the same type.
Dim soundPerm As SoundPermission = VerifyTypeMatch(target)
' If 'this' and 'target' are unrestricted, return a new unrestricted permission.
If m_specifiedAsUnrestricted AndAlso soundPerm.m_specifiedAsUnrestricted Then
Return Clone(True, SoundPermissionState.PlayAnySound)
End If
' Calculate the intersected permissions. If there are none, return null.
Dim val As SoundPermissionState = CType(Math.Min(CType(m_flags, Int32), CType(soundPerm.m_flags, Int32)), SoundPermissionState)
If val = 0 Then
Return Nothing
End If
' Return a new object with the intersected permission value.
Return Clone(False, val)
End Function 'Intersect
Uwagi
Przecięcie dwóch uprawnień to uprawnienie opisujące wspólny zestaw operacji opisanych w obu tych operacjach. Tylko żądanie, które przechodzi oba oryginalne uprawnienia, przejdzie skrzyżowanie.
W przypadku wszystkich implementacji metody wymagane są następujące instrukcje Intersect .
X
i Y
reprezentują IPermission odwołania do obiektów, które nie null
są .
X
. Funkcja Intersect(X
) zwraca wartość równąX
.X
. Funkcja Intersect(Y
) zwraca tę samą wartość coY
. Intersect(X
).X
. Funkcja Intersect(null
) zwraca wartośćnull
.