DnsPermission.Union(IPermission) Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Creates a permission instance that is the union of the current permission instance and the specified permission instance.
public:
override System::Security::IPermission ^ Union(System::Security::IPermission ^ target);
public override System.Security.IPermission Union (System.Security.IPermission target);
override this.Union : System.Security.IPermission -> System.Security.IPermission
Public Overrides Function Union (target As IPermission) As IPermission
Parameters
- target
- IPermission
The DnsPermission instance to combine with the current instance.
Returns
A DnsPermission instance that represents the union of the current DnsPermission instance with the specified DnsPermission instance. If target
is null
, this method returns a copy of the current instance. If the current instance or target
is unrestricted, this method returns a DnsPermission instance that is unrestricted; otherwise, it returns a DnsPermission instance that is restricted.
Exceptions
target
is neither a DnsPermission nor null
.
Examples
The following example creates a permission instance that is the union of the current permission instance and the specified permission instance.
private:
void MyUnion()
{
// Create a DnsPermission instance that is the union of the current DnsPermission
// instance and the specified DnsPermission instance.
DnsPermission^ permission = dynamic_cast<DnsPermission^>(dnsPermission1->Union( dnsPermission2 ));
// Print the attributes and the values of the union instance of DnsPermission.
PrintKeysAndValues( permission->ToXml()->Attributes );
}
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();
}
private void MyUnion()
{
// Create a DnsPermission instance that is the union of the current DnsPermission
// instance and the specified DnsPermission instance.
DnsPermission permission = (DnsPermission)dnsPermission1.Union(dnsPermission2);
// Print the attributes and the values of the union 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();
}
Private Sub MyUnion()
' Create a DnsPermission instance which is the union of the current DnsPermission instance and the specified DnsPermission instance.
Dim permission As DnsPermission = CType(dnsPermission1.Union(dnsPermission2), DnsPermission)
' Print the attributes and values of the union instance of DnsPermission.
PrintKeysAndValues(permission.ToXml().Attributes)
End Sub
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
Remarks
The Union method returns a DnsPermission instance that allows the access defined by either the current DnsPermission instance or the specified DnsPermission instance. Any demand that passes either permission passes their union.