Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / DeferrableContent.cs / 1471291 / DeferrableContent.cs
using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Security; using System.Xaml; using System.Xaml.Permissions; using System.Windows.Baml2006; using System.ComponentModel; namespace System.Windows { [TypeConverter(typeof(DeferrableContentConverter))] public class DeferrableContent { ////// Critical to write: We will assert this permission before realizing the deferred content. /// Critical to read: Can be mutated via FromXml method. /// internal XamlLoadPermission LoadPermission { [SecurityCritical] get; [SecurityCritical] private set; } ////// Critical to write: This describes the content that is allowed to be loaded with LoadPermission. /// If LoadPermission is null then this is non-critical. /// Safe to read: Carries no privilege in itself. /// internal Stream Stream { [SecurityCritical, SecurityTreatAsSafe] get; [SecurityCritical] private set; } internal Baml2006SchemaContext SchemaContext { get; private set; } internal IXamlObjectWriterFactory ObjectWriterFactory { get; private set; } internal XamlObjectWriterSettings ObjectWriterParentSettings { get; private set; } internal object RootObject { get; private set; } // internal IServiceProvider ServiceProvider { get; private set; } ////// Critical: Sets critical properties LoadPermission and Stream /// Safe: Demands LoadPermission before setting it /// [SecurityCritical, SecurityTreatAsSafe] internal DeferrableContent(Stream stream, Baml2006SchemaContext schemaContext, IXamlObjectWriterFactory objectWriterFactory, IServiceProvider serviceProvider, object rootObject) { ObjectWriterParentSettings = objectWriterFactory.GetParentSettings(); if (ObjectWriterParentSettings.AccessLevel != null) { XamlLoadPermission loadPermission = new XamlLoadPermission(ObjectWriterParentSettings.AccessLevel); loadPermission.Demand(); this.LoadPermission = loadPermission; } bool assemblyTargetsFramework2 = false; // The local assembly can be null if it is not specified in the XamlReaderSettings. if (schemaContext.LocalAssembly != null) { assemblyTargetsFramework2 = schemaContext.LocalAssembly.ImageRuntimeVersion.StartsWith("v2", StringComparison.Ordinal); } // There is an incompatibility between the framework versions 3 and 4 regarding MarkupExtension resources. // In version 3, MarkupExtension resources did not provide values when looked up. // In version 4, they do. if (assemblyTargetsFramework2) { ObjectWriterParentSettings.SkipProvideValueOnRoot = true; } this.Stream = stream; this.SchemaContext = schemaContext; this.ObjectWriterFactory = objectWriterFactory; this.ServiceProvider = serviceProvider; this.RootObject = rootObject; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections.Generic; using System.Text; using System.IO; using System.Security; using System.Xaml; using System.Xaml.Permissions; using System.Windows.Baml2006; using System.ComponentModel; namespace System.Windows { [TypeConverter(typeof(DeferrableContentConverter))] public class DeferrableContent { ////// Critical to write: We will assert this permission before realizing the deferred content. /// Critical to read: Can be mutated via FromXml method. /// internal XamlLoadPermission LoadPermission { [SecurityCritical] get; [SecurityCritical] private set; } ////// Critical to write: This describes the content that is allowed to be loaded with LoadPermission. /// If LoadPermission is null then this is non-critical. /// Safe to read: Carries no privilege in itself. /// internal Stream Stream { [SecurityCritical, SecurityTreatAsSafe] get; [SecurityCritical] private set; } internal Baml2006SchemaContext SchemaContext { get; private set; } internal IXamlObjectWriterFactory ObjectWriterFactory { get; private set; } internal XamlObjectWriterSettings ObjectWriterParentSettings { get; private set; } internal object RootObject { get; private set; } // internal IServiceProvider ServiceProvider { get; private set; } ////// Critical: Sets critical properties LoadPermission and Stream /// Safe: Demands LoadPermission before setting it /// [SecurityCritical, SecurityTreatAsSafe] internal DeferrableContent(Stream stream, Baml2006SchemaContext schemaContext, IXamlObjectWriterFactory objectWriterFactory, IServiceProvider serviceProvider, object rootObject) { ObjectWriterParentSettings = objectWriterFactory.GetParentSettings(); if (ObjectWriterParentSettings.AccessLevel != null) { XamlLoadPermission loadPermission = new XamlLoadPermission(ObjectWriterParentSettings.AccessLevel); loadPermission.Demand(); this.LoadPermission = loadPermission; } bool assemblyTargetsFramework2 = false; // The local assembly can be null if it is not specified in the XamlReaderSettings. if (schemaContext.LocalAssembly != null) { assemblyTargetsFramework2 = schemaContext.LocalAssembly.ImageRuntimeVersion.StartsWith("v2", StringComparison.Ordinal); } // There is an incompatibility between the framework versions 3 and 4 regarding MarkupExtension resources. // In version 3, MarkupExtension resources did not provide values when looked up. // In version 4, they do. if (assemblyTargetsFramework2) { ObjectWriterParentSettings.SkipProvideValueOnRoot = true; } this.Stream = stream; this.SchemaContext = schemaContext; this.ObjectWriterFactory = objectWriterFactory; this.ServiceProvider = serviceProvider; this.RootObject = rootObject; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HtmlTextViewAdapter.cs
- RtType.cs
- StreamReader.cs
- CodeGotoStatement.cs
- ControlCachePolicy.cs
- Stack.cs
- DropSource.cs
- HttpInputStream.cs
- control.ime.cs
- SystemIPInterfaceProperties.cs
- DataListItemEventArgs.cs
- UxThemeWrapper.cs
- StringStorage.cs
- ActiveDocumentEvent.cs
- TextAnchor.cs
- CollectionContainer.cs
- CodeNamespaceImportCollection.cs
- LineGeometry.cs
- DesignerActionKeyboardBehavior.cs
- DispatcherExceptionEventArgs.cs
- SafeFindHandle.cs
- ToolZone.cs
- UrlPropertyAttribute.cs
- RequestCacheValidator.cs
- WSTrust.cs
- URLBuilder.cs
- BoolExpressionVisitors.cs
- XmlMemberMapping.cs
- EntityKeyElement.cs
- MappingModelBuildProvider.cs
- ContainerFilterService.cs
- RtfControls.cs
- MetafileHeaderWmf.cs
- EntityContainerEntitySet.cs
- HttpBindingExtension.cs
- CustomAttributeBuilder.cs
- StrokeNodeOperations.cs
- PowerModeChangedEventArgs.cs
- UIElement3D.cs
- ResolveNameEventArgs.cs
- SecurityElement.cs
- Parser.cs
- BrowserDefinition.cs
- HttpRuntime.cs
- TextRenderer.cs
- MenuTracker.cs
- EntityCollection.cs
- XPathScanner.cs
- PathFigureCollection.cs
- CellTreeNode.cs
- GroupBox.cs
- FrameworkContextData.cs
- TrailingSpaceComparer.cs
- ArithmeticException.cs
- HitTestWithGeometryDrawingContextWalker.cs
- TrackBarRenderer.cs
- HierarchicalDataSourceIDConverter.cs
- RawStylusActions.cs
- ItemsControlAutomationPeer.cs
- ItemsControlAutomationPeer.cs
- TreeNodeStyle.cs
- AutoResetEvent.cs
- MemoryFailPoint.cs
- AnonymousIdentificationSection.cs
- ListItem.cs
- LinqDataSourceValidationException.cs
- Point3DAnimationBase.cs
- ReadOnlyHierarchicalDataSource.cs
- IntegrationExceptionEventArgs.cs
- ISCIIEncoding.cs
- FontFaceLayoutInfo.cs
- HttpUnhandledOperationInvoker.cs
- DetailsViewInsertEventArgs.cs
- SingleStorage.cs
- XmlImplementation.cs
- xml.cs
- VectorKeyFrameCollection.cs
- InfoCardArgumentException.cs
- DesignBindingEditor.cs
- WebBrowserPermission.cs
- IIS7UserPrincipal.cs
- DefaultProxySection.cs
- PackagingUtilities.cs
- CalendarAutoFormat.cs
- DataMemberFieldEditor.cs
- EnumBuilder.cs
- Variable.cs
- AuthenticationSchemesHelper.cs
- ReferentialConstraintRoleElement.cs
- HighlightVisual.cs
- TableItemStyle.cs
- WebBrowserBase.cs
- HtmlTitle.cs
- ProcessHostServerConfig.cs
- BinaryFormatterSinks.cs
- HyperLinkStyle.cs
- PhoneCall.cs
- RtfFormatStack.cs
- ConstNode.cs
- IndependentAnimationStorage.cs