| File: System\IO\Packaging\PackageProperties.cs | Web Access |
| Project: src\runtime\src\libraries\System.IO.Packaging\src\System.IO.Packaging.csproj (System.IO.Packaging) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. //----------------------------------------------------------------------------- // // Description: // This abstract class provides access to the "core properties" of an XPS document. // The "core properties" are a subset of the standard OLE property sets // SummaryInformation and DocumentSummaryInformation, and include such properties // as Title and Subject. // // There are two concrete derived classes. PackagePackageProperties represents the // core properties of a normal unencrypted XPS document, physically represented // as a Zip archive. EncryptedPackagePackageProperties represents the core properties // of an RM-protected XPS document, physically represented by an OLE compound // file containing a well-known stream in which an XPS Zip archive, encrypted // in its entirety, is stored. // //----------------------------------------------------------------------------- using System; using System.IO.Packaging; namespace System.IO.Packaging { /// <summary> /// This class provides access to the "core properties", such as Title and /// Subject, of an RM-protected XPS package. These properties are a subset of /// of the standard OLE property sets SummaryInformation and /// DocumentSummaryInformation. /// </summary> public abstract class PackageProperties : IDisposable { #region IDisposable /// <summary> /// Allow the object to clean up all resources it holds (both managed and /// unmanaged), and ensure that the resources won't be released a /// second time by removing it from the finalization queue. /// </summary> public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } /// <summary> /// This default implementation is provided for subclasses that do not /// make use of the IDisposable functionality. /// </summary> protected virtual void Dispose(bool disposing) { } #endregion IDisposable //------------------------------------------------------ // // Public Properties // //------------------------------------------------------ #region Public Properties #region SummaryInformation properties /// <summary> /// The title. /// </summary> public abstract string? Title { get; set; } /// <summary> /// The topic of the contents. /// </summary> public abstract string? Subject { get; set; } /// <summary> /// The primary creator. The identification is environment-specific and /// can consist of a name, email address, employee ID, etc. It is /// recommended that this value be only as verbose as necessary to /// identify the individual. /// </summary> public abstract string? Creator { get; set; } /// <summary> /// A delimited set of keywords to support searching and indexing. This /// is typically a list of terms that are not available elsewhere in the /// properties. /// </summary> public abstract string? Keywords { get; set; } /// <summary> /// The description or abstract of the contents. /// </summary> public abstract string? Description { get; set; } /// <summary> /// The user who performed the last modification. The identification is /// environment-specific and can consist of a name, email address, /// employee ID, etc. It is recommended that this value be only as /// verbose as necessary to identify the individual. /// </summary> public abstract string? LastModifiedBy { get; set; } /// <summary> /// The revision number. This value indicates the number of saves or /// revisions. The application is responsible for updating this value /// after each revision. /// </summary> public abstract string? Revision { get; set; } /// <summary> /// The date and time of the last printing. /// </summary> public abstract Nullable<DateTime> LastPrinted { get; set; } /// <summary> /// The creation date and time. /// </summary> public abstract Nullable<DateTime> Created { get; set; } /// <summary> /// The date and time of the last modification. /// </summary> public abstract Nullable<DateTime> Modified { get; set; } #endregion SummaryInformation properties #region DocumentSummaryInformation properties /// <summary> /// The category. This value is typically used by UI applications to create navigation /// controls. /// </summary> public abstract string? Category { get; set; } /// <summary> /// A unique identifier. /// </summary> public abstract string? Identifier { get; set; } /// <summary> /// The type of content represented, generally defined by a specific /// use and intended audience. Example values include "Whitepaper", /// "Security Bulletin", and "Exam". (This property is distinct from /// MIME content types as defined in RFC 2045.) /// </summary> public abstract string? ContentType { get; set; } /// <summary> /// The primary language of the package content. The language tag is /// composed of one or more parts: A primary language subtag and a /// (possibly empty) series of subsequent subtags, for example, "EN-US". /// These values MUST follow the convention specified in RFC 3066. /// </summary> public abstract string? Language { get; set; } /// <summary> /// The version number. This value is set by the user or by the application. /// </summary> public abstract string? Version { get; set; } /// <summary> /// The status of the content. Example values include "Draft", /// "Reviewed", and "Final". /// </summary> public abstract string? ContentStatus { get; set; } #endregion DocumentSummaryInformation properties #endregion Public Properties } }