Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / DeferrableContentConverter.cs / 1305600 / DeferrableContentConverter.cs
using System; using System.IO; using System.Net; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Diagnostics; using System.ComponentModel; using System.Windows.Threading; using System.Windows.Media; using System.IO.Packaging; using MS.Internal.IO.Packaging; // for PackageCacheEntry using System.Globalization; using System.Windows.Navigation; using MS.Internal; using MS.Internal.Utility; using MS.Internal.AppModel; using MS.Utility; using System.Xaml; using System.Windows.Baml2006; using System.Windows.Markup; namespace System.Windows { public class DeferrableContentConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (typeof(Stream).IsAssignableFrom(sourceType) || sourceType == typeof(byte[])) { return true; } return base.CanConvertFrom(context, sourceType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value != null) { if (context == null) { throw new ArgumentNullException("context"); } XamlSchemaContext xamlSchemaContext = RequireService(context).SchemaContext; Baml2006SchemaContext schemaContext = xamlSchemaContext as Baml2006SchemaContext; if (schemaContext == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedBamlSchemaContext)); } IXamlObjectWriterFactory objectWriterFactory = RequireService (context); IProvideValueTarget ipvt = RequireService (context); IRootObjectProvider rootObjectProvider = RequireService (context); ResourceDictionary dictionary = ipvt.TargetObject as ResourceDictionary; if (dictionary == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedResourceDictionaryTarget)); } Stream stream = value as Stream; if (stream == null) { byte[] bytes = value as byte[]; if (bytes != null) { stream = new MemoryStream(bytes); } } if (stream == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedBinaryContent)); } // DeferrableContent deferrableContext = new DeferrableContent(stream, schemaContext, objectWriterFactory, context, rootObjectProvider.RootObject); return deferrableContext; } return base.ConvertFrom(context, culture, value); } private static T RequireService (IServiceProvider provider) where T : class { T result = provider.GetService(typeof(T)) as T; if (result == null) { throw new InvalidOperationException(SR.Get(SRID.DeferringLoaderNoContext, typeof(DeferrableContentConverter).Name, typeof(T).Name)); } return result; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.IO; using System.Net; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; using System.Diagnostics; using System.ComponentModel; using System.Windows.Threading; using System.Windows.Media; using System.IO.Packaging; using MS.Internal.IO.Packaging; // for PackageCacheEntry using System.Globalization; using System.Windows.Navigation; using MS.Internal; using MS.Internal.Utility; using MS.Internal.AppModel; using MS.Utility; using System.Xaml; using System.Windows.Baml2006; using System.Windows.Markup; namespace System.Windows { public class DeferrableContentConverter : TypeConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { if (typeof(Stream).IsAssignableFrom(sourceType) || sourceType == typeof(byte[])) { return true; } return base.CanConvertFrom(context, sourceType); } public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value) { if (value != null) { if (context == null) { throw new ArgumentNullException("context"); } XamlSchemaContext xamlSchemaContext = RequireService (context).SchemaContext; Baml2006SchemaContext schemaContext = xamlSchemaContext as Baml2006SchemaContext; if (schemaContext == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedBamlSchemaContext)); } IXamlObjectWriterFactory objectWriterFactory = RequireService (context); IProvideValueTarget ipvt = RequireService (context); IRootObjectProvider rootObjectProvider = RequireService (context); ResourceDictionary dictionary = ipvt.TargetObject as ResourceDictionary; if (dictionary == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedResourceDictionaryTarget)); } Stream stream = value as Stream; if (stream == null) { byte[] bytes = value as byte[]; if (bytes != null) { stream = new MemoryStream(bytes); } } if (stream == null) { throw new InvalidOperationException(SR.Get(SRID.ExpectedBinaryContent)); } // DeferrableContent deferrableContext = new DeferrableContent(stream, schemaContext, objectWriterFactory, context, rootObjectProvider.RootObject); return deferrableContext; } return base.ConvertFrom(context, culture, value); } private static T RequireService (IServiceProvider provider) where T : class { T result = provider.GetService(typeof(T)) as T; if (result == null) { throw new InvalidOperationException(SR.Get(SRID.DeferringLoaderNoContext, typeof(DeferrableContentConverter).Name, typeof(T).Name)); } return result; } } } // 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
- UpdatePanelTrigger.cs
- Identifier.cs
- AddToCollection.cs
- XmlAttributeHolder.cs
- RelationshipNavigation.cs
- Ticks.cs
- DefaultProfileManager.cs
- ActivityBuilderHelper.cs
- PreviewPageInfo.cs
- UnauthorizedWebPart.cs
- HtmlInputFile.cs
- CombinedGeometry.cs
- DynamicQueryableWrapper.cs
- ServerValidateEventArgs.cs
- ConditionCollection.cs
- XmlAttributeCollection.cs
- Trace.cs
- Timeline.cs
- DomainUpDown.cs
- SeekableMessageNavigator.cs
- CodeTypeConstructor.cs
- ConditionalAttribute.cs
- QilStrConcatenator.cs
- FunctionDetailsReader.cs
- LineGeometry.cs
- SqlCacheDependencySection.cs
- SqlDataReaderSmi.cs
- CodeAttributeArgument.cs
- OrderByQueryOptionExpression.cs
- BridgeDataReader.cs
- ExpressionContext.cs
- EntityConnection.cs
- EndpointAddressAugust2004.cs
- WebPartTracker.cs
- NullRuntimeConfig.cs
- Typography.cs
- ExpressionBindingCollection.cs
- SchemaCollectionCompiler.cs
- ConstructorBuilder.cs
- FullTextBreakpoint.cs
- _SSPISessionCache.cs
- SystemColors.cs
- HebrewNumber.cs
- LocatorManager.cs
- DefaultParameterValueAttribute.cs
- CharEnumerator.cs
- FormParameter.cs
- PermissionSet.cs
- Timeline.cs
- WebUtil.cs
- EndOfStreamException.cs
- _emptywebproxy.cs
- SymDocumentType.cs
- Misc.cs
- HttpProfileGroupBase.cs
- SqlConnectionManager.cs
- PartManifestEntry.cs
- AlignmentXValidation.cs
- clipboard.cs
- StorageInfo.cs
- EdgeProfileValidation.cs
- OracleInfoMessageEventArgs.cs
- SubclassTypeValidator.cs
- GACMembershipCondition.cs
- ExtentCqlBlock.cs
- TextBoxAutoCompleteSourceConverter.cs
- PageStatePersister.cs
- Sequence.cs
- XamlVector3DCollectionSerializer.cs
- ObjectViewFactory.cs
- PerspectiveCamera.cs
- SchemaMapping.cs
- KeyedCollection.cs
- CodeParameterDeclarationExpression.cs
- ListControl.cs
- OleDbConnectionFactory.cs
- listitem.cs
- FontUnit.cs
- StackOverflowException.cs
- InternalResources.cs
- ColumnTypeConverter.cs
- LinqDataSourceStatusEventArgs.cs
- Application.cs
- PersonalizationStateInfoCollection.cs
- FrameworkContentElement.cs
- HandlerFactoryCache.cs
- Win32KeyboardDevice.cs
- ProxyGenerationError.cs
- EnglishPluralizationService.cs
- KnownIds.cs
- StyleCollection.cs
- AbstractDataSvcMapFileLoader.cs
- BehaviorEditorPart.cs
- wgx_render.cs
- InputLangChangeRequestEvent.cs
- FamilyCollection.cs
- TabControlCancelEvent.cs
- XmlDataSourceNodeDescriptor.cs
- BaseTreeIterator.cs
- CollectionConverter.cs