PackageDocument.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / TrustUi / MS / Internal / documents / Application / PackageDocument.cs / 1 / PackageDocument.cs

                            //------------------------------------------------------------------------------ 
// 
//    Copyright (C) Microsoft Corporation.  All rights reserved. 
//
//  
// Extends Document with a single member TrancationalPackage.
//  
// 
// History:
//  08/28/2005: [....]: Initial implementation. 
//-----------------------------------------------------------------------------

using System;
using System.IO; 
using System.IO.Packaging;
using System.Security; 
 
using MS.Internal.PresentationUI;
 
namespace MS.Internal.Documents.Application
{
/// 
/// Extends Document with a single member TrancationalPackage. 
/// 
[FriendAccessAllowed] 
internal class PackageDocument : Document 
{
    #region Constructors 
    //-------------------------------------------------------------------------
    // Constructors
    //-------------------------------------------------------------------------
 
    internal PackageDocument(Document dependency)
        : base(dependency) { } 
 
    #endregion Constructors
 
    #region Internal Properties
    //--------------------------------------------------------------------------
    // Internal Properties
    //------------------------------------------------------------------------- 

    ///  
    ///  
    /// 
    internal override Stream Destination 
    {
        get
        {
            Invariant.Assert(Dependency != null); 
            return Dependency.Destination;
        } 
    } 

    ///  
    /// 
    /// 
    internal override Stream Source
    { 
        get
        { 
            Invariant.Assert(Dependency != null); 
            return Dependency.Source;
        } 
    }

    /// 
    ///  
    /// 
    internal override Stream Workspace 
    { 
        get
        { 
            Invariant.Assert(Dependency != null);
            return Dependency.Workspace;
        }
    } 

    ///  
    ///  
    /// 
    ///  
    /// Critical:
    ///  - sets _package we do not want this replaced as it is suppose
    ///    to represent the stream.
    /// NotSafe: 
    ///  - replacing it from a source other than that which is derived from
    ///    the dependent document would result in writing out something other 
    ///    than what the user believes they consented to 
    /// 
    internal TransactionalPackage Package 
    {
        get { return _package.Value; }

        [SecurityCritical] 
        set { _package.Value = value; }
    } 
    #endregion Internal Properties 

    #region IDisposable Members 
    //--------------------------------------------------------------------------
    // IDisposable Members
    //--------------------------------------------------------------------------
 
    /// 
    ///  
    ///  
    /// 
    /// Critical: 
    ///  - sets package
    /// TreatAsSafe:
    ///  - sets value to null when we dispose
    ///  
    [SecurityCritical, SecurityTreatAsSafe]
    protected override void Dispose(bool disposing) 
    { 
        try
        { 
            if (disposing)
            {
                if (Package != null)
                { 
                    Package.Close();
                    Package = null; 
                } 
            }
        } 
        finally
        {
            base.Dispose(disposing);
        } 
    }
    #endregion IDisposable Members 
 
    #region Private Fields
    //------------------------------------------------------------------------- 
    // Private Fields
    //--------------------------------------------------------------------------
    private SecurityCriticalDataForSet _package;
    #endregion Private Fields 
}
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK