PackUriHelper.ResolvePartUri(Uri, Uri) 方法

定義

傳回組件 URI,提供來源組件 URI 以及含有目標組件相對路徑的 URI。

C#
public static Uri ResolvePartUri (Uri sourcePartUri, Uri targetUri);

參數

sourcePartUri
Uri

來源組件的 URI,或是 "/" 以指定 Package 根目錄。

targetUri
Uri

相對於目標組件的 URI。

傳回

Uri

在指定的 SourcePartUritargetUri 參數之間解析的目標組件之 URI。

例外狀況

sourcePartUritargetUrinull

sourcePartUri 不是有效的組件 URI。

-或-

targetUri 不是有效的相對 URI。

範例

下列範例會示範如何使用 ResolvePartUri 方法。

C#
// Open the Package.
// ('using' statement insures that 'package' is
//  closed and disposed when it goes out of scope.)
using (Package package =
    Package.Open(packagePath, FileMode.Open, FileAccess.Read))
{
    PackagePart documentPart = null;
    PackagePart resourcePart = null;

    // Get the Package Relationships and look for
    //   the Document part based on the RelationshipType
    Uri uriDocumentTarget = null;
    foreach (PackageRelationship relationship in
        package.GetRelationshipsByType(PackageRelationshipType))
    {
        // Resolve the Relationship Target Uri
        //   so the Document Part can be retrieved.
        uriDocumentTarget = PackUriHelper.ResolvePartUri(
            new Uri("/", UriKind.Relative), relationship.TargetUri);

        // Open the Document Part, write the contents to a file.
        documentPart = package.GetPart(uriDocumentTarget);
        ExtractPart(documentPart, targetDirectory);
    }

    // Get the Document part's Relationships,
    //   and look for required resources.
    Uri uriResourceTarget = null;
    foreach (PackageRelationship relationship in
        documentPart.GetRelationshipsByType(
                                ResourceRelationshipType))
    {
        // Resolve the Relationship Target Uri
        //   so the Resource Part can be retrieved.
        uriResourceTarget = PackUriHelper.ResolvePartUri(
            documentPart.Uri, relationship.TargetUri);

        // Open the Resource Part and write the contents to a file.
        resourcePart = package.GetPart(uriResourceTarget);
        ExtractPart(resourcePart, targetDirectory);
    }
}// end:using(Package package) - Close & dispose package.

備註

下表說明的 ResolvePartUri範例案例。

sourcePartUri targetUri 傳回的 URI
/mydoc/markup/page.xml picture.jpg /mydoc/markup/picture.jpg
/mydoc/markup/page.xml images/picture.jpg /mydoc/markup/images/picture.jpg
/mydoc/markup/page.xml ./picture.jpg /mydoc/markup/picture.jpg
/mydoc/markup/page.xml ../picture.jpg /mydoc/picture.jpg
/mydoc/markup/page.xml ../images/picture.jpg /mydoc/images/picture.jpg
/ images/picture.jpg /images/picture.jpg

適用於

產品 版本
.NET Core 1.0, Core 1.1, 8 (package-provided), 9 (package-provided)
.NET Framework 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7 (package-provided), 4.7, 4.7.1 (package-provided), 4.7.1, 4.7.2 (package-provided), 4.7.2, 4.8 (package-provided), 4.8, 4.8.1
.NET Standard 2.0 (package-provided)
Windows Desktop 3.0, 3.1, 5, 6, 7, 8, 9

另請參閱