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
- ObjectListItemCollection.cs
- SoapFault.cs
- TextEvent.cs
- DeviceOverridableAttribute.cs
- WindowsListView.cs
- ValidatingReaderNodeData.cs
- DomNameTable.cs
- CommandEventArgs.cs
- Simplifier.cs
- HistoryEventArgs.cs
- DependencyProperty.cs
- ClonableStack.cs
- ObjectStorage.cs
- XpsManager.cs
- HealthMonitoringSectionHelper.cs
- LinkUtilities.cs
- GeneralTransform3DGroup.cs
- InputProcessorProfiles.cs
- PauseStoryboard.cs
- PipeStream.cs
- InlineUIContainer.cs
- SqlCommandSet.cs
- WmlSelectionListAdapter.cs
- TemplateBindingExpressionConverter.cs
- DbConnectionInternal.cs
- LingerOption.cs
- NativeMethods.cs
- TextEditorContextMenu.cs
- DecimalConstantAttribute.cs
- WorkflowInstance.cs
- FieldTemplateFactory.cs
- objectquery_tresulttype.cs
- IListConverters.cs
- ConfigurationFileMap.cs
- TransformProviderWrapper.cs
- StreamSecurityUpgradeAcceptorAsyncResult.cs
- FileEnumerator.cs
- Schema.cs
- KeyEvent.cs
- BamlTreeUpdater.cs
- HttpModule.cs
- CommandField.cs
- Size3DValueSerializer.cs
- BinHexDecoder.cs
- CodeNamespace.cs
- PrimitiveXmlSerializers.cs
- KeyboardNavigation.cs
- TransactionContextValidator.cs
- ReadWriteObjectLock.cs
- DemultiplexingDispatchMessageFormatter.cs
- AnnotationAuthorChangedEventArgs.cs
- ManagementObject.cs
- XmlElementAttribute.cs
- EmptyEnumerable.cs
- ImportCatalogPart.cs
- CookieHandler.cs
- SqlNotificationEventArgs.cs
- WsdlInspector.cs
- EventPropertyMap.cs
- ExternalCalls.cs
- Context.cs
- Command.cs
- ErrorRuntimeConfig.cs
- xmlglyphRunInfo.cs
- UnsafeNativeMethods.cs
- Gdiplus.cs
- WeakReferenceKey.cs
- SchemaComplexType.cs
- FormsAuthentication.cs
- formatter.cs
- NumericUpDown.cs
- ColumnMap.cs
- SemanticKeyElement.cs
- UnsignedPublishLicense.cs
- DebuggerService.cs
- NGCPageContentCollectionSerializerAsync.cs
- CodeDomDecompiler.cs
- FileSystemEventArgs.cs
- TableLayoutStyleCollection.cs
- XmlAttributeAttribute.cs
- Helpers.cs
- dtdvalidator.cs
- DataGridViewCheckBoxColumn.cs
- GenericTypeParameterBuilder.cs
- Form.cs
- CompilerCollection.cs
- MemberRelationshipService.cs
- ContextTokenTypeConverter.cs
- AppDomain.cs
- Funcletizer.cs
- ControlPaint.cs
- GeneralTransform.cs
- XmlException.cs
- MorphHelper.cs
- ValidationEventArgs.cs
- IntSecurity.cs
- ServiceBusyException.cs
- FormViewPagerRow.cs
- CompatibleComparer.cs
- UnconditionalPolicy.cs