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
- BypassElement.cs
- DataGridViewCellPaintingEventArgs.cs
- DateRangeEvent.cs
- XmlException.cs
- WebEncodingValidator.cs
- AssociatedControlConverter.cs
- CriticalFileToken.cs
- DesignerExtenders.cs
- TokenBasedSetEnumerator.cs
- Underline.cs
- NativeMethods.cs
- CodeExporter.cs
- BooleanKeyFrameCollection.cs
- SiteIdentityPermission.cs
- PageThemeParser.cs
- ModuleElement.cs
- DataGridView.cs
- EntitySetBaseCollection.cs
- Knowncolors.cs
- FrugalList.cs
- SizeChangedEventArgs.cs
- XmlILIndex.cs
- UIPropertyMetadata.cs
- RegexWriter.cs
- RouteItem.cs
- RangeValueProviderWrapper.cs
- SqlDataSourceCache.cs
- IssuedTokenServiceCredential.cs
- EdmToObjectNamespaceMap.cs
- ChtmlPhoneCallAdapter.cs
- HyperLink.cs
- XmlWrappingReader.cs
- _PooledStream.cs
- ComboBoxRenderer.cs
- AlphabetConverter.cs
- DataContractSerializerSection.cs
- JoinSymbol.cs
- ContextQuery.cs
- ModelTreeEnumerator.cs
- MenuAdapter.cs
- ScopelessEnumAttribute.cs
- SafeNativeMethods.cs
- LocalizabilityAttribute.cs
- MaterialGroup.cs
- SymLanguageVendor.cs
- XmlReaderSettings.cs
- WinCategoryAttribute.cs
- ChannelSinkStacks.cs
- WebProxyScriptElement.cs
- UrlPropertyAttribute.cs
- FillErrorEventArgs.cs
- PipeSecurity.cs
- AdPostCacheSubstitution.cs
- XmlIlVisitor.cs
- DataTableReader.cs
- JulianCalendar.cs
- URLBuilder.cs
- SymbolTable.cs
- OdbcInfoMessageEvent.cs
- MasterPageCodeDomTreeGenerator.cs
- Renderer.cs
- Int32CollectionConverter.cs
- ExtentKey.cs
- OLEDB_Enum.cs
- cookieexception.cs
- SymmetricAlgorithm.cs
- ImageFormat.cs
- ValidationError.cs
- CustomAttributeFormatException.cs
- OdbcHandle.cs
- DrawingContextWalker.cs
- ListSourceHelper.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- Paragraph.cs
- HttpResponse.cs
- Base64Stream.cs
- SafeCoTaskMem.cs
- DbDeleteCommandTree.cs
- InstanceKeyView.cs
- DelayDesigner.cs
- DataGrid.cs
- ResolveMatchesCD1.cs
- XsltFunctions.cs
- BamlRecords.cs
- SchemaTypeEmitter.cs
- BrowsableAttribute.cs
- JsonReader.cs
- LowerCaseStringConverter.cs
- BufferedReadStream.cs
- COAUTHIDENTITY.cs
- SrgsElementFactory.cs
- ImageListStreamer.cs
- ContractMethodParameterInfo.cs
- ProcessModelSection.cs
- CodeVariableReferenceExpression.cs
- TextParaLineResult.cs
- itemelement.cs
- AmbientValueAttribute.cs
- XamlReaderHelper.cs
- BulletedList.cs