Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / Markup / RoutedEventValueSerializer.cs / 1 / RoutedEventValueSerializer.cs
//------------------------------------------------------------------------ // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation, 2005 // // File: RoutedEventValueSerializer.cs // // Contents: Value serializer for the RoutedEvent class // // Created: 04/28/2005 [....] // //----------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; namespace System.Windows.Markup { internal class RoutedEventValueSerializer: ValueSerializer { public override bool CanConvertToString(object value, IValueSerializerContext context) { return ValueSerializer.GetSerializerFor(typeof(Type), context) != null; } public override bool CanConvertFromString(string value, IValueSerializerContext context) { return ValueSerializer.GetSerializerFor(typeof(Type), context) != null; } public override string ConvertToString(object value, IValueSerializerContext context) { RoutedEvent routedEvent = value as RoutedEvent; if (routedEvent != null) { ValueSerializer typeSerializer = ValueSerializer.GetSerializerFor(typeof(Type), context); if (typeSerializer != null) { return typeSerializer.ConvertToString(routedEvent.OwnerType, context) + "." + routedEvent.Name; } } return base.ConvertToString(value, context); } static DictionaryinitializedTypes = new Dictionary (); static void ForceTypeConstructors(Type currentType) { // Force load the Statics by walking up the hierarchy and running class constructors while (currentType != null && !initializedTypes.ContainsKey(currentType)) { System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(currentType.TypeHandle); initializedTypes[currentType] = currentType; currentType = currentType.BaseType; } } public override object ConvertFromString(string value, IValueSerializerContext context) { ValueSerializer typeSerializer = ValueSerializer.GetSerializerFor(typeof(Type), context); if (typeSerializer != null) { int index = value.IndexOf('.'); if (index > 0) { Type type = typeSerializer.ConvertFromString(value.Substring(0, index), context) as Type; string name = value.Substring(index + 1).Trim(); ForceTypeConstructors(type); return EventManager.GetRoutedEventFromName(name, type); } } return base.ConvertFromString(value, context); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //------------------------------------------------------------------------ // // Microsoft Windows Client Platform // Copyright (C) Microsoft Corporation, 2005 // // File: RoutedEventValueSerializer.cs // // Contents: Value serializer for the RoutedEvent class // // Created: 04/28/2005 [....] // //----------------------------------------------------------------------- using System; using System.Collections.Generic; using System.Text; namespace System.Windows.Markup { internal class RoutedEventValueSerializer: ValueSerializer { public override bool CanConvertToString(object value, IValueSerializerContext context) { return ValueSerializer.GetSerializerFor(typeof(Type), context) != null; } public override bool CanConvertFromString(string value, IValueSerializerContext context) { return ValueSerializer.GetSerializerFor(typeof(Type), context) != null; } public override string ConvertToString(object value, IValueSerializerContext context) { RoutedEvent routedEvent = value as RoutedEvent; if (routedEvent != null) { ValueSerializer typeSerializer = ValueSerializer.GetSerializerFor(typeof(Type), context); if (typeSerializer != null) { return typeSerializer.ConvertToString(routedEvent.OwnerType, context) + "." + routedEvent.Name; } } return base.ConvertToString(value, context); } static Dictionary initializedTypes = new Dictionary (); static void ForceTypeConstructors(Type currentType) { // Force load the Statics by walking up the hierarchy and running class constructors while (currentType != null && !initializedTypes.ContainsKey(currentType)) { System.Runtime.CompilerServices.RuntimeHelpers.RunClassConstructor(currentType.TypeHandle); initializedTypes[currentType] = currentType; currentType = currentType.BaseType; } } public override object ConvertFromString(string value, IValueSerializerContext context) { ValueSerializer typeSerializer = ValueSerializer.GetSerializerFor(typeof(Type), context); if (typeSerializer != null) { int index = value.IndexOf('.'); if (index > 0) { Type type = typeSerializer.ConvertFromString(value.Substring(0, index), context) as Type; string name = value.Substring(index + 1).Trim(); ForceTypeConstructors(type); return EventManager.GetRoutedEventFromName(name, type); } } return base.ConvertFromString(value, context); } } } // 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
- DesignConnectionCollection.cs
- AuthenticationConfig.cs
- EventRoute.cs
- ObjectTag.cs
- ColumnMap.cs
- ChannelAcceptor.cs
- SqlCommandSet.cs
- MinimizableAttributeTypeConverter.cs
- Command.cs
- ModuleBuilderData.cs
- UserControlCodeDomTreeGenerator.cs
- ControlFilterExpression.cs
- StreamFormatter.cs
- DataSourceControlBuilder.cs
- TdsValueSetter.cs
- Evidence.cs
- _CacheStreams.cs
- AssemblyNameUtility.cs
- Guid.cs
- GacUtil.cs
- DataGridHeaderBorder.cs
- XamlValidatingReader.cs
- UInt64Converter.cs
- BamlLocalizableResourceKey.cs
- codemethodreferenceexpression.cs
- CheckBoxField.cs
- Pen.cs
- SizeConverter.cs
- AutomationProperty.cs
- GraphicsContainer.cs
- DbParameterCollection.cs
- TrackingMemoryStreamFactory.cs
- SqlRewriteScalarSubqueries.cs
- MembershipValidatePasswordEventArgs.cs
- SortDescriptionCollection.cs
- DoubleStorage.cs
- DetailsViewPagerRow.cs
- SByte.cs
- QilTypeChecker.cs
- DispatcherFrame.cs
- pingexception.cs
- SqlConnectionPoolGroupProviderInfo.cs
- RootAction.cs
- ObjectRef.cs
- ResourcePermissionBase.cs
- Mutex.cs
- ConfigXmlSignificantWhitespace.cs
- DataBindingHandlerAttribute.cs
- GeometryDrawing.cs
- TextAnchor.cs
- CallTemplateAction.cs
- Attributes.cs
- TypeListConverter.cs
- XmlEventCache.cs
- SqlServices.cs
- DataSourceSelectArguments.cs
- CodeEntryPointMethod.cs
- MSG.cs
- OpCopier.cs
- CompositionAdorner.cs
- NameTable.cs
- ThreadAttributes.cs
- SamlAssertion.cs
- MessageQueue.cs
- XmlSerializerVersionAttribute.cs
- StaticFileHandler.cs
- FlowchartDesigner.xaml.cs
- DesignerOptionService.cs
- Crypto.cs
- InfoCardBaseException.cs
- Permission.cs
- cache.cs
- StorageRoot.cs
- TraceListener.cs
- EntityProxyTypeInfo.cs
- HttpCookie.cs
- RegexCaptureCollection.cs
- WorkItem.cs
- MachineSettingsSection.cs
- TextBlock.cs
- SwitchElementsCollection.cs
- ToggleButton.cs
- XmlTextEncoder.cs
- HtmlInputButton.cs
- OutputCacheModule.cs
- StackBuilderSink.cs
- ArgumentDirectionHelper.cs
- TabControl.cs
- PropertyInfoSet.cs
- SessionStateUtil.cs
- SQLMembershipProvider.cs
- PerformanceCounterLib.cs
- ZoneButton.cs
- CannotUnloadAppDomainException.cs
- DataBindingCollection.cs
- StrokeNodeOperations2.cs
- AsyncDataRequest.cs
- DesignerListAdapter.cs
- MergePropertyDescriptor.cs
- IndexerNameAttribute.cs