Il presente articolo è stato tradotto manualmente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale.
Traduzione
Originale
Questo argomento non è stato ancora valutato - Valuta questo argomento

Classe Package

Rappresenta un contenitore che può archiviare molteplici oggetti.

Spazio dei nomi:  System.IO.Packaging
Assembly:  WindowsBase (in WindowsBase.dll)
public abstract class Package : IDisposable

Il tipo Package espone i seguenti membri.

  NomeDescrizione
Metodo protettoPackage(FileAccess) Inizializza una nuova istanza della classe Package che utilizza un oggetto specificato FileAccess.
Metodo protettoPackage(FileAccess, Boolean) Inizializza una nuova istanza della classe Package che utilizza un oggetto specificato FileAccess e un opzione streaming.
In alto
  NomeDescrizione
Proprietà pubblicaFileOpenAccessOttiene l'impostazione di accesso ai file per il pacchetto.
Proprietà pubblicaPackagePropertiesOttiene le proprietà principali del pacchetto.
In alto
  NomeDescrizione
Metodo pubblicoClose Salva e chiude il pacchetto insieme a tutti i flussi sottostanti.
Metodo pubblicoCreatePart(Uri, String) Crea una nuova parte decompressa con un URI specificato e un tipo di contenuto.
Metodo pubblicoCreatePart(Uri, String, CompressionOption) Crea una nuova parte con un URI specificato, un tipo di contenuto e un'opzione di compressione.
Metodo protettoCreatePartCoreQuando è sottoposto a override in una classe derivata, crea una parte nuova nel pacchetto.
Metodo pubblicoCreateRelationship(Uri, TargetMode, String)Crea una relazione a livello di pacchetto con una parte con un URI specificato, un modalità di destinazione e un tipo di relazione.
Metodo pubblicoCreateRelationship(Uri, TargetMode, String, String)Crea una relazione a livello di pacchetto con una parte con un URI specificato, un modalità di destinazione, un tipo di relazione e identifier (ID).
Metodo pubblicoDeletePartElimina una parte con un URI specificato dal pacchetto.
Metodo protettoDeletePartCoreQuando è sottoposto a override in una classe derivata, elimina una parte con un URI specificato.
Metodo pubblicoDeleteRelationshipElimina una relazione a livello di pacchetto.
Metodo protettoDisposeSvuota e salva il contenuto di tutte le parti e le relazioni, chiude il pacchetto e rilascia tutte le risorse.
Metodo pubblicoEquals(Object)Determina se l'oggetto Object specificato è uguale all'oggetto Object corrente. (Ereditato da Object)
Metodo protettoFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoFlushSalva il contenuto di tutte le parti e le relazioni contenute nel pacchetto.
Metodo protettoFlushCoreQuando è sottoposto a override in una classe derivata, salva il contenuto di tutte le parti e le relazioni nell'archivio della classe derivata.
Metodo pubblicoGetHashCodeFunge da funzione hash per un determinato tipo. (Ereditato da Object)
Metodo pubblicoGetPartRestituisce la parte con un URI specificato.
Metodo protettoGetPartCoreQuando è sottoposto a override in una classe derivata, restituisce la parte alla quale fa riferimento un URI specificato.
Metodo pubblicoGetPartsRestituisce un insieme di tutte le parti nel pacchetto.
Metodo protettoGetPartsCoreQuando è sottoposto a override in una classe derivata, restituisce una matrice di tutte le parti nel pacchetto.
Metodo pubblicoGetRelationshipRestituisce la relazione a livello di pacchetto con un identificatore specificato.
Metodo pubblicoGetRelationshipsRestituisce un insieme di tutte le relazioni a livello di pacchetto.
Metodo pubblicoGetRelationshipsByTypeRestituisce un insieme di tutte le relazioni a livello di pacchetto che corrispondono a RelationshipType specificato.
Metodo pubblicoGetTypeOttiene l'oggetto Type dell'istanza corrente. (Ereditato da Object)
Metodo protettoMemberwiseCloneConsente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoMembro staticoOpen(Stream)Apre un pacchetto su un flusso di IO specificato.
Metodo pubblicoMembro staticoOpen(String)Apre un pacchetto in un percorso e con nome file specificati.
Metodo pubblicoMembro staticoOpen(Stream, FileMode)Apre un pacchetto con un flusso di IO e modalità file specificati.
Metodo pubblicoMembro staticoOpen(String, FileMode)Apre un pacchetto in un percorso specificato utilizzando una modalità di file specificata.
Metodo pubblicoMembro staticoOpen(Stream, FileMode, FileAccess)Apre un pacchetto con un'impostazione specificata di flusso di IO, modalità file e accesso ai file.
Metodo pubblicoMembro staticoOpen(String, FileMode, FileAccess)Apre un pacchetto in un percorso specificato utilizzando un'impostazione specificato di modalità file e accesso ai file.
Metodo pubblicoMembro staticoOpen(String, FileMode, FileAccess, FileShare)Apre un pacchetto in un percorso specificato utilizzando un'impostazione specificata di modalità file, accesso ai file e condivisione file.
Metodo pubblicoPartExistsIndica se una parte con un URI specificato è nel pacchetto.
Metodo pubblicoRelationshipExistsIndica se una relazione a livello di pacchetto con un ID specificato è contenuta nel pacchetto.
Metodo pubblicoToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
In alto
  NomeDescrizione
Implementazione esplicita dell'interfacciaMetodo privatoIDisposable.Dispose Questo membro supporta l'infrastruttura Windows Presentation Foundation (WPF) e non è destinata all'utilizzo per applicazione. In sostituzione, utilizzare il metodo Dispose indipendente dai tipi.
In alto

Package è una classe astratta che può essere utilizzata per organizzare oggetti in una sola entità di un formato fisico definito per portabilità ed accesso efficiente.

Un file zip è il formato fisico primario per Package. Altre implementazioni di Package possono utilizzare altri formati fisici come un documento XML, un database, o un servizio Web.

Come un file system, gli elementi contenuti in un Package sono organizzati in una gerarchica di cartelle e file.

Sebbene Package sia una classe astratta, la classe derivata ZipPackage viene utilizzata come impostazione predefinita dal metodo Open.

PackagePart (la "parte") è la classe astratta che rappresenta un oggetto archiviato in Package.

PackageRelationship (la "relazione") definisce un'associazione tra Package di origine o PackagePart e un oggetto di destinazione. Una PackageRelationship può essere di due tipi, ognuno dei quali può essere di uno di due formati:

  • Una relazione (creata dal metodo Package.CreateRelationship ) a livello di pacchetto mette in correlazione Package con:

    • Una parte di destinazione nel pacchetto.

    • Una risorsa di destinazione fuori del pacchetto.

  • Una relazione (creata dal metodo PackagePart.CreateRelationship ) a livello di parte mette in correlazione PackagePart con:

    • Un'altra parte di destinazione nel pacchetto.

    • Una risorsa di destinazione fuori del pacchetto.

La sorgente della relazione Package o PackagePart è considerata “proprietaria" della relazione stessa. Quando l'oggetto di origine viene eliminato, anche tutte le altre relazioni delle quali esso è proprietario vengono eliminate. Il processo di creazione o di eliminazione di una relazione non modifica fisicamente in alcun modo nè la sorgente nè gli oggetti di destinazione.

PackageDigitalSignature (la "firma digitale") è una composizione di parti e relazioni che rappresentano una firma digitale inclusa in Package. La firma digitale identifica il creatore e conferma che le parti e le relazioni contenute nel Package non sono state modificate.

I Package supportano inoltre Gestione dei diritti digitali (DRM) la quale consente agli elementi contenuti in un oggetto Package di essere crittografati con specifici diritti di accesso consentiti agli utenti autorizzati.

In base all'architettura di Package, XpsDocument è un tipo di pacchetto progettato per archiviare documenti secondo la specifica XML Paper Specification (XPS)

Microsoft .NET Framework utilizza pacchetti per archiviare contenuti, risorse e relazioni per pagine e documenti tramite un file ZIP standard per impostazione predefinita. Come con qualsiasi file ZIP, la vostra applicazione può utilizzare le classi di System.IO.Packaging per archiviare e opzionalmente proteggere qualsiasi tipo o numero di file di dati in un unico contenitore ad accesso efficiente.

Per ulteriori informazioni, vedere la specifica Open Packaging Conventions (OPC) disponibile per il download all'indirizzo http://go.microsoft.com/fwlink/?LinkID=71255.

Nell'esempio seguente vengono illustrati i passaggi di base per la creazione di Package. In questo esempio, un pacchetto viene creato per contenere un documento insieme a un'immagine grafica che viene visualizzata come parte del documento. (Si tratta del caso simile nel quale un file HTML ha un tag < IMG > che fa riferimento a un file di immagine esterno.) Nel pacchetto sono inclusi anche due elementi PackageRelationship. Il primo, una relazione a livello" di "pacchetto, definisce la parte del documento come l'elemento radice del pacchetto. Il secondo, la relazione a "livello di "parte, definisce l'associazione tra la parte del documento (l' "origine" della relazione a livello di parte) e l'utilizzo della parte dell'immagine (la "destinazione" della relazione a livello di parte). Per l'esempio completo, vedere Esempio di scrittura di package.


//  -------------------------- CreatePackage --------------------------
/// <summary>
///   Creates a package zip file containing specified
///   content and resource files.</summary>
private static void CreatePackage()
{
    // Convert system path and file names to Part URIs. In this example
    // Uri partUriDocument /* /Content/Document.xml */ =
    //     PackUriHelper.CreatePartUri(
    //         new Uri("Content\Document.xml", UriKind.Relative));
    // Uri partUriResource /* /Resources/Image1.jpg */ =
    //     PackUriHelper.CreatePartUri(
    //         new Uri("Resources\Image1.jpg", UriKind.Relative));
    Uri partUriDocument = PackUriHelper.CreatePartUri(
                              new Uri(documentPath, UriKind.Relative));
    Uri partUriResource = PackUriHelper.CreatePartUri(
                              new Uri(resourcePath, UriKind.Relative));

    // Create the Package
    // (If the package file already exists, FileMode.Create will
    //  automatically delete it first before creating a new one.
    //  The 'using' statement insures that 'package' is
    //  closed and disposed when it goes out of scope.)
    using (Package package =
        Package.Open(packagePath, FileMode.Create))
    {
        // Add the Document part to the Package
        PackagePart packagePartDocument =
            package.CreatePart(partUriDocument,
                           System.Net.Mime.MediaTypeNames.Text.Xml);

        // Copy the data to the Document Part
        using (FileStream fileStream = new FileStream(
               documentPath, FileMode.Open, FileAccess.Read))
        {
            CopyStream(fileStream, packagePartDocument.GetStream());
        }// end:using(fileStream) - Close and dispose fileStream.

        // Add a Package Relationship to the Document Part
        package.CreateRelationship(packagePartDocument.Uri,
                                   TargetMode.Internal,
                                   PackageRelationshipType);

        // Add a Resource Part to the Package
        PackagePart packagePartResource =
            package.CreatePart(partUriResource,
                           System.Net.Mime.MediaTypeNames.Image.Jpeg);

        // Copy the data to the Resource Part
        using (FileStream fileStream = new FileStream(
               resourcePath, FileMode.Open, FileAccess.Read))
        {
            CopyStream(fileStream, packagePartResource.GetStream());
        }// end:using(fileStream) - Close and dispose fileStream.

        // Add Relationship from the Document part to the Resource part
        packagePartDocument.CreateRelationship(
                                new Uri(@"../resources/image1.jpg",
                                UriKind.Relative),
                                TargetMode.Internal,
                                ResourceRelationshipType);

    }// end:using (Package package) - Close and dispose package.

}// end:CreatePackage()


//  --------------------------- CopyStream ---------------------------
/// <summary>
///   Copies data from a source stream to a target stream.</summary>
/// <param name="source">
///   The source stream to copy from.</param>
/// <param name="target">
///   The destination stream to copy to.</param>
private static void CopyStream(Stream source, Stream target)
{
    const int bufSize = 0x1000;
    byte[] buf = new byte[bufSize];
    int bytesRead = 0;
    while ((bytesRead = source.Read(buf, 0, bufSize)) > 0)
        target.Write(buf, 0, bytesRead);
}// end:CopyStream()


.NET Framework

Supportato in: 4, 3.5, 3.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 7, Windows Vista SP1 o versione successiva, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.
Qualsiasi membro static (Shared in Visual Basic) pubblico di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.
Il documento è risultato utile?
(1500 caratteri rimanenti)

Aggiunte alla community

AGGIUNGI
© 2013 Microsoft. Tutti i diritti riservati.