public override IPermission Union(IPermission target)
{
if (target == null)
{
return(Copy());
}
else if (!(target is FileIOPermission))
{
throw new ArgumentException(_("Arg_PermissionMismatch"));
}
else if (IsUnrestricted() ||
((FileIOPermission)target).IsUnrestricted())
{
return(new FileIOPermission
(PermissionState.Unrestricted));
}
else
{
return(new FileIOPermission
(PermissionState.None,
EnvironmentPermission.Union(readList,
((FileIOPermission)target).readList, false),
EnvironmentPermission.Union(writeList,
((FileIOPermission)target).writeList, false),
EnvironmentPermission.Union(appendList,
((FileIOPermission)target).appendList, false),
EnvironmentPermission.Union(discoveryList,
((FileIOPermission)target).discoveryList, false),
allLocalFiles |
((FileIOPermission)target).allLocalFiles,
allFiles | ((FileIOPermission)target).allFiles));
}
}