Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / ndp / fx / src / Designer / CompMod / System / ComponentModel / Design / Serialization / CodeDomSerializationProvider.cs / 1 / CodeDomSerializationProvider.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //----------------------------------------------------------------------------- /* */ namespace System.ComponentModel.Design.Serialization { using System.Design; using System; using System.CodeDom; using System.CodeDom.Compiler; using System.Collections; using System.Collections.Specialized; using System.ComponentModel; using System.ComponentModel.Design; using System.Diagnostics; using System.Resources; using System.Runtime.Serialization; using System.Globalization; ////// /// This is the serialization provider for all code dom serializers. /// internal sealed class CodeDomSerializationProvider : IDesignerSerializationProvider { ////// Returns a code dom serializer /// private object GetCodeDomSerializer(IDesignerSerializationManager manager, object currentSerializer, Type objectType, Type serializerType) { // If this isn't a serializer type we recognize, do nothing. Also, if metadata specified // a custom serializer, then use it. if (currentSerializer != null) { return null; } // Null is a valid value that can be passed into GetSerializer. It indicates // that the value we need to serialize is null, in which case we handle it // through the PrimitiveCodeDomSerializer. // if (objectType == null) { return PrimitiveCodeDomSerializer.Default; } // Support for components. // if (typeof(IComponent).IsAssignableFrom(objectType)) { return ComponentCodeDomSerializer.Default; } // We special case enums. They do have instance descriptors, but we want // better looking code than the instance descriptor can provide for flags, // so we do it ourselves. // if (typeof(Enum).IsAssignableFrom(objectType)) { return EnumCodeDomSerializer.Default; } // We will provide a serializer for any intrinsic types. // if (objectType.IsPrimitive || objectType.IsEnum || objectType == typeof(string)) { return PrimitiveCodeDomSerializer.Default; } // And one for collections. // if (typeof(ICollection).IsAssignableFrom(objectType)) { return CollectionCodeDomSerializer.Default; } // And one for IContainer if (typeof(IContainer).IsAssignableFrom(objectType)) { return ContainerCodeDomSerializer.Default; } // And one for resources // if (typeof(ResourceManager).IsAssignableFrom(objectType)) { return ResourceCodeDomSerializer.Default; } // The default serializer can do any object including those with instance descriptors. return CodeDomSerializer.Default; } ////// Returns a code dom serializer for members /// private object GetMemberCodeDomSerializer(IDesignerSerializationManager manager, object currentSerializer, Type objectType, Type serializerType) { // Don't provide our serializer if someone else already had one if (currentSerializer != null) { return null; } if (typeof(PropertyDescriptor).IsAssignableFrom(objectType)) { return PropertyMemberCodeDomSerializer.Default; } if (typeof(EventDescriptor).IsAssignableFrom(objectType)) { return EventMemberCodeDomSerializer.Default; } return null; } ////// Returns a code dom serializer for types /// private object GetTypeCodeDomSerializer(IDesignerSerializationManager manager, object currentSerializer, Type objectType, Type serializerType) { // Don't provide our serializer if someone else already had one if (currentSerializer != null) { return null; } if (typeof(IComponent).IsAssignableFrom(objectType)) { return ComponentTypeCodeDomSerializer.Default; } return TypeCodeDomSerializer.Default; } ////// /// This will be called by the serialization manager when it /// is trying to locate a serialzer for an object type. /// If this serialization provider can provide a serializer /// that is of the correct type, it should return it. /// Otherwise, it should return null. /// object IDesignerSerializationProvider.GetSerializer(IDesignerSerializationManager manager, object currentSerializer, Type objectType, Type serializerType) { if (serializerType == typeof(CodeDomSerializer)) { return GetCodeDomSerializer(manager, currentSerializer, objectType, serializerType); } else if (serializerType == typeof(MemberCodeDomSerializer)) { return GetMemberCodeDomSerializer(manager, currentSerializer, objectType, serializerType); } else if (serializerType == typeof(TypeCodeDomSerializer)) { return GetTypeCodeDomSerializer(manager, currentSerializer, objectType, serializerType); } return null; // don't understand this type of serializer. } } } // 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
- DocumentPage.cs
- Brush.cs
- SoapElementAttribute.cs
- ToolStripItemImageRenderEventArgs.cs
- FixedSOMTableRow.cs
- SchemaDeclBase.cs
- DateTimeFormat.cs
- WebBrowserHelper.cs
- DataSysAttribute.cs
- FloaterBaseParaClient.cs
- MexHttpsBindingCollectionElement.cs
- EmptyEnumerator.cs
- Window.cs
- ValueTypeFixupInfo.cs
- EventHandlersStore.cs
- DataControlLinkButton.cs
- WinFormsUtils.cs
- RenderTargetBitmap.cs
- EdmProviderManifest.cs
- ACE.cs
- SerializationSectionGroup.cs
- EntityContainer.cs
- Registry.cs
- TextTrailingCharacterEllipsis.cs
- MetadataPropertyCollection.cs
- DbProviderManifest.cs
- EmbeddedMailObject.cs
- PointAnimationUsingKeyFrames.cs
- CodeNamespace.cs
- ExecutionEngineException.cs
- ContentTypeSettingDispatchMessageFormatter.cs
- DropShadowBitmapEffect.cs
- ReadContentAsBinaryHelper.cs
- LinearGradientBrush.cs
- RelatedView.cs
- SizeAnimationClockResource.cs
- UncommonField.cs
- Binding.cs
- VisualProxy.cs
- FigureParagraph.cs
- _AutoWebProxyScriptWrapper.cs
- PageThemeBuildProvider.cs
- path.cs
- Relationship.cs
- PreloadedPackages.cs
- ExpressionParser.cs
- MenuCommandsChangedEventArgs.cs
- XsltLibrary.cs
- UnsafeNativeMethods.cs
- PrintPreviewGraphics.cs
- VirtualPathUtility.cs
- PreparingEnlistment.cs
- TextBox.cs
- _NetworkingPerfCounters.cs
- HttpCookiesSection.cs
- ContextStack.cs
- TextBoxRenderer.cs
- ExpressionVisitor.cs
- SettingsAttributes.cs
- RemoteWebConfigurationHostServer.cs
- LinqDataSource.cs
- dsa.cs
- ExtractorMetadata.cs
- TabletDevice.cs
- EditBehavior.cs
- TextEndOfSegment.cs
- TextTreeUndoUnit.cs
- XmlLanguage.cs
- BrowserCapabilitiesCompiler.cs
- PropertyBuilder.cs
- TickBar.cs
- EnumerableRowCollectionExtensions.cs
- WebPartCatalogCloseVerb.cs
- HtmlInputReset.cs
- ClassHandlersStore.cs
- IndexerNameAttribute.cs
- ContentElementAutomationPeer.cs
- XamlPathDataSerializer.cs
- DatagramAdapter.cs
- OptionUsage.cs
- TypeUsageBuilder.cs
- ToolStripPanelRow.cs
- ContextMenuService.cs
- OptimalTextSource.cs
- XMLSchema.cs
- FacetValueContainer.cs
- KnownTypesProvider.cs
- BindingContext.cs
- CacheSection.cs
- SystemDiagnosticsSection.cs
- BasePattern.cs
- ObjectConverter.cs
- bidPrivateBase.cs
- RubberbandSelector.cs
- ReverseInheritProperty.cs
- IISMapPath.cs
- EnterpriseServicesHelper.cs
- GlobalizationAssembly.cs
- XmlExpressionDumper.cs
- WindowsListViewGroupHelper.cs