public override IPermission Union(IPermission target) {
if (target == null)
return this.Copy();
if (target.GetType() != this.GetType())
throw new ArgumentException(SR.GetString(SR.PermissionTypeMismatch), "target");
ResourcePermissionBase targetPermission = (ResourcePermissionBase)target;
ResourcePermissionBase newPermission = null;
if (this.IsUnrestricted() || targetPermission.IsUnrestricted()) {
newPermission = CreateInstance();
newPermission.isUnrestricted = true;
}
else {
Hashtable newPermissionRootTable = (Hashtable)UnionOfContents(this.rootTable, targetPermission.rootTable);
if (newPermissionRootTable != null) {
newPermission = CreateInstance();
newPermission.rootTable = newPermissionRootTable;
}
}
return newPermission;
}