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
- EllipticalNodeOperations.cs
- ColorConverter.cs
- Identity.cs
- Identifier.cs
- DataControlFieldHeaderCell.cs
- SByte.cs
- MultipleCopiesCollection.cs
- FillRuleValidation.cs
- EmptyQuery.cs
- ResolveMatchesApril2005.cs
- FreezableOperations.cs
- CatalogPartCollection.cs
- CompositeCollection.cs
- TextElementEnumerator.cs
- ResXBuildProvider.cs
- ObsoleteAttribute.cs
- Token.cs
- AppLevelCompilationSectionCache.cs
- XmlHelper.cs
- Stream.cs
- ObjectListGeneralPage.cs
- InfoCardTraceRecord.cs
- ForwardPositionQuery.cs
- AssemblyCacheEntry.cs
- GridItemPattern.cs
- WinFormsSecurity.cs
- BitmapEffectGeneralTransform.cs
- AutoFocusStyle.xaml.cs
- FrameworkElementFactory.cs
- HTTPNotFoundHandler.cs
- Processor.cs
- PixelFormatConverter.cs
- PasswordRecovery.cs
- MappingModelBuildProvider.cs
- SqlNodeTypeOperators.cs
- XPathDescendantIterator.cs
- IndexerNameAttribute.cs
- XmlnsCache.cs
- DynamicRouteExpression.cs
- UserControl.cs
- NetworkInformationPermission.cs
- FlatButtonAppearance.cs
- FrameworkElement.cs
- PhysicalAddress.cs
- ProcessManager.cs
- TemplateBaseAction.cs
- XmlUtil.cs
- BindingMemberInfo.cs
- XXXInfos.cs
- oledbmetadatacollectionnames.cs
- TrustManagerMoreInformation.cs
- DateTimeConstantAttribute.cs
- MenuItemStyle.cs
- ControlPaint.cs
- TableRow.cs
- CompoundFileStorageReference.cs
- XmlWrappingReader.cs
- MessagingDescriptionAttribute.cs
- UnsafeNativeMethods.cs
- DXD.cs
- CategoryAttribute.cs
- DataGridViewUtilities.cs
- CustomErrorCollection.cs
- FontResourceCache.cs
- Exceptions.cs
- XamlPoint3DCollectionSerializer.cs
- MiniCustomAttributeInfo.cs
- ResourceReferenceKeyNotFoundException.cs
- OdbcReferenceCollection.cs
- TabControlDesigner.cs
- RoutedEvent.cs
- StaticDataManager.cs
- ClaimSet.cs
- AssemblyAttributes.cs
- ViewCellRelation.cs
- WebServiceMethodData.cs
- PipeStream.cs
- DataGridViewColumnCollectionDialog.cs
- SoapElementAttribute.cs
- CacheEntry.cs
- XmlSchemaObjectCollection.cs
- PrePrepareMethodAttribute.cs
- CacheSection.cs
- CheckBox.cs
- CommandHelper.cs
- AttributeUsageAttribute.cs
- BevelBitmapEffect.cs
- DesignerActionTextItem.cs
- TypeInitializationException.cs
- TableLayoutPanel.cs
- StorageEntityTypeMapping.cs
- EdmFunction.cs
- XmlSchemaObject.cs
- RegexRunnerFactory.cs
- WebResponse.cs
- SkinBuilder.cs
- TypeConverterHelper.cs
- ObfuscationAttribute.cs
- Label.cs
- DataServiceConfiguration.cs