DnsPermission.Intersect(IPermission) Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает экземпляр разрешения, представляющий собой пересечение текущего и заданного экземпляров разрешений.
public:
override System::Security::IPermission ^ Intersect(System::Security::IPermission ^ target);
public override System.Security.IPermission Intersect (System.Security.IPermission target);
override this.Intersect : System.Security.IPermission -> System.Security.IPermission
Public Overrides Function Intersect (target As IPermission) As IPermission
Параметры
- target
- IPermission
Экземпляр DnsPermission для пересечения с текущим экземпляром.
Возвращаемое значение
Экземпляр DnsPermission, представляющий собой пересечение текущего экземпляра DnsPermission с заданным экземпляром DnsPermission или null
, если пересечение является пустым. Если и текущий экземпляр и target
являются неограниченными, этот метод возвращает новый, неограниченный экземпляр DnsPermission; в противном случае возвращается null
.
Исключения
Параметр target
не является ни DnsPermission, ни null
.
Примеры
В следующем примере создается экземпляр разрешения, который является пересечением текущего экземпляра разрешения и указанного экземпляра разрешения.
public:
void useDns()
{
// Create a DnsPermission instance.
dnsPermission1 = gcnew DnsPermission( PermissionState::Unrestricted );
dnsPermission2 = gcnew DnsPermission( PermissionState::None );
// Check for permission.
dnsPermission1->Demand();
dnsPermission2->Demand();
Console::WriteLine( "Attributes and Values of first DnsPermission instance :" );
PrintKeysAndValues( dnsPermission1->ToXml()->Attributes );
Console::WriteLine( "Attributes and Values of second DnsPermission instance :" );
PrintKeysAndValues( dnsPermission2->ToXml()->Attributes );
Console::WriteLine( "Union of both instances : " );
MyUnion();
Console::WriteLine( "Intersection of both instances : " );
MyIntersection();
}
private:
void PrintKeysAndValues( Hashtable^ myList )
{
// Get the enumerator that can iterate through the hash tabble.
IDictionaryEnumerator^ myEnumerator = myList->GetEnumerator();
Console::WriteLine( "\t-KEY-\t-VALUE-" );
while ( myEnumerator->MoveNext() )
{
Console::WriteLine( "\t {0}:\t {1}", myEnumerator->Key, myEnumerator->Value );
}
Console::WriteLine();
}
// Create a DnsPermission instance that is the intersection of current
// DnsPermission instance and the specified DnsPermission instance.
void MyIntersection()
{
DnsPermission^ permission = dynamic_cast<DnsPermission^>(dnsPermission1->Intersect( dnsPermission2 ));
// Print the attributes and the values of the intersection instance of
// DnsPermission.
PrintKeysAndValues( permission->ToXml()->Attributes );
}
public void useDns() {
// Create a DnsPermission instance.
dnsPermission1 = new DnsPermission(PermissionState.Unrestricted);
dnsPermission2 = new DnsPermission(PermissionState.None);
// Check for permission.
dnsPermission1.Demand();
dnsPermission2.Demand();
Console.WriteLine("Attributes and Values of first DnsPermission instance :");
PrintKeysAndValues(dnsPermission1.ToXml().Attributes);
Console.WriteLine("Attributes and Values of second DnsPermission instance :");
PrintKeysAndValues(dnsPermission2.ToXml().Attributes);
Console.WriteLine("Union of both instances : ");
MyUnion();
Console.WriteLine("Intersection of both instances : ");
MyIntersection();
}
private void PrintKeysAndValues(Hashtable myList) {
// Get the enumerator that can iterate through the hash tabble.
IDictionaryEnumerator myEnumerator = myList.GetEnumerator();
Console.WriteLine("\t-KEY-\t-VALUE-");
while (myEnumerator.MoveNext())
Console.WriteLine("\t{0}:\t{1}", myEnumerator.Key, myEnumerator.Value);
Console.WriteLine();
}
// Create a DnsPermission instance that is the intersection of current
// DnsPermission instance and the specified DnsPermission instance.
private void MyIntersection()
{
DnsPermission permission = (DnsPermission)dnsPermission1.Intersect(dnsPermission2);
// Print the attributes and the values of the intersection instance of
// DnsPermission.
PrintKeysAndValues(permission.ToXml().Attributes);
}
Public Sub useDns()
' Create a DnsPermission instance.
dnsPermission1 = New DnsPermission(PermissionState.Unrestricted)
dnsPermission2 = New DnsPermission(PermissionState.None)
' Check for permission.
dnsPermission1.Demand()
dnsPermission2.Demand()
Console.WriteLine("Attributes and Values of first DnsPermission instance :")
PrintKeysAndValues(dnsPermission1.ToXml().Attributes)
Console.WriteLine("Attributes and Values of second DnsPermission instance :")
PrintKeysAndValues(dnsPermission2.ToXml().Attributes)
Console.WriteLine("Union of both instances : ")
MyUnion()
Console.WriteLine("Intersection of both instances : ")
MyIntersection()
End Sub
Private Sub PrintKeysAndValues(myList As Hashtable)
' Get the enumerator that can iterate through the hash table.
Dim myEnumerator As IDictionaryEnumerator = myList.GetEnumerator()
Console.WriteLine(ControlChars.Tab + "-KEY-" + ControlChars.Tab + "-VALUE-")
While myEnumerator.MoveNext()
Console.WriteLine(ControlChars.Tab + "{0}:" + ControlChars.Tab + "{1}", myEnumerator.Key, myEnumerator.Value)
End While
Console.WriteLine()
End Sub
Private Sub MyIntersection()
' Create a DnsPermission instance that is the intersection of the current
' DnsPermission instance and the specified DnsPermission instance.
Dim permission As DnsPermission = CType(dnsPermission1.Intersect(dnsPermission2), DnsPermission)
' Print the attributes and values of the intersection instance of DnsPermission.
PrintKeysAndValues(permission.ToXml().Attributes)
End Sub
Комментарии
Метод Intersect возвращает DnsPermission экземпляр , который разрешает доступ, определенный как текущим DnsPermission экземпляром, так и указанным DnsPermission экземпляром . Любое требование должно передавать оба разрешения, чтобы пройти их пересечение.