public override IPermission Union(IPermission other)
{
EnvironmentPermission ep = Cast(other);
if (ep == null)
{
return(Copy());
}
if (IsUnrestricted() || ep.IsUnrestricted())
{
return(new EnvironmentPermission(PermissionState.Unrestricted));
}
if (IsEmpty() && ep.IsEmpty())
{
return(null);
}
EnvironmentPermission result = (EnvironmentPermission)Copy();
string path = ep.GetPathList(EnvironmentPermissionAccess.Read);
if (path != null)
{
result.AddPathList(EnvironmentPermissionAccess.Read, path);
}
path = ep.GetPathList(EnvironmentPermissionAccess.Write);
if (path != null)
{
result.AddPathList(EnvironmentPermissionAccess.Write, path);
}
return(result);
}