public static Uri Create(Uri packageUri, Uri partUri, string fragment)
{
Check.PackageUri(packageUri);
Check.PackageUriIsValid(packageUri);
if (partUri != null)
{
Check.PartUriIsValid(partUri);
}
if (fragment != null && (fragment.Length == 0 || fragment[0] != '#'))
{
throw new ArgumentException("Fragment", "Fragment must not be empty and must start with '#'");
}
// FIXME: Validate that partUri is a valid one? Must be relative, must start with '/'
// First replace the slashes, then escape the special characters
string orig = packageUri.OriginalString.Replace('/', ',');
if (partUri != null)
{
orig += partUri.OriginalString;
}
// if (sb[sb.Length - 1] != '/')
// sb.Append ('/');
if (fragment != null)
{
orig += fragment;
}
return(new Uri("pack://" + orig));
}