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
- DataGridCellAutomationPeer.cs
- InstanceData.cs
- ProtectedProviderSettings.cs
- BindingBase.cs
- BrushMappingModeValidation.cs
- ToolStripDropDown.cs
- GridViewAutoFormat.cs
- SerialErrors.cs
- AppDomainUnloadedException.cs
- ResourceDescriptionAttribute.cs
- ClrProviderManifest.cs
- Query.cs
- AudioFormatConverter.cs
- CellParaClient.cs
- GridViewColumnCollection.cs
- ListViewSelectEventArgs.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- WebPageTraceListener.cs
- EpmCustomContentWriterNodeData.cs
- GridViewColumnCollection.cs
- XmlUnspecifiedAttribute.cs
- ClientRolePrincipal.cs
- GridView.cs
- DataGridRow.cs
- ConfigurationPropertyAttribute.cs
- ObjectView.cs
- Column.cs
- FillRuleValidation.cs
- List.cs
- WebPartTracker.cs
- EntityCollection.cs
- Form.cs
- DependencyObject.cs
- ThemeDirectoryCompiler.cs
- NotFiniteNumberException.cs
- TaskFactory.cs
- FloaterBaseParagraph.cs
- XPathSingletonIterator.cs
- EventLogPermissionEntry.cs
- WorkflowExecutor.cs
- EditCommandColumn.cs
- TypeBuilder.cs
- Bidi.cs
- SingleStorage.cs
- PassportAuthenticationModule.cs
- EntityDataSourceDataSelection.cs
- FixedSchema.cs
- FormsAuthenticationEventArgs.cs
- PageCatalogPart.cs
- TrackingLocation.cs
- SettingsBindableAttribute.cs
- StrongNameUtility.cs
- EditorPartCollection.cs
- EnumUnknown.cs
- AssemblyName.cs
- InputScopeManager.cs
- AQNBuilder.cs
- TemplateLookupAction.cs
- BordersPage.cs
- MsdtcWrapper.cs
- StreamGeometry.cs
- SqlColumnizer.cs
- GlyphRunDrawing.cs
- X509Certificate2.cs
- CacheSection.cs
- SaveFileDialogDesigner.cs
- _IPv6Address.cs
- X509Certificate.cs
- WebControlAdapter.cs
- DataGridViewColumnEventArgs.cs
- _ChunkParse.cs
- ColumnCollection.cs
- NavigationPropertySingletonExpression.cs
- AssociatedControlConverter.cs
- TokenBasedSet.cs
- AuthorizationContext.cs
- FakeModelPropertyImpl.cs
- ActiveXHelper.cs
- SoapAttributeAttribute.cs
- ListViewGroupCollectionEditor.cs
- BrowserCapabilitiesFactoryBase.cs
- WebPartsPersonalizationAuthorization.cs
- XmlExpressionDumper.cs
- FontInfo.cs
- DataTablePropertyDescriptor.cs
- sitestring.cs
- GlyphShapingProperties.cs
- XmlQueryCardinality.cs
- Parameter.cs
- SchemaTableColumn.cs
- InstanceKey.cs
- NativeMethods.cs
- KeyTimeConverter.cs
- ProgressBar.cs
- COAUTHINFO.cs
- EmbeddedMailObjectsCollection.cs
- ByteAnimationUsingKeyFrames.cs
- SortedList.cs
- ObjectDataSource.cs
- Main.cs