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
- SessionViewState.cs
- TabItem.cs
- OneOf.cs
- AttachedPropertyMethodSelector.cs
- SQLInt16Storage.cs
- PipelineDeploymentState.cs
- SqlMethods.cs
- UIElementHelper.cs
- ExtenderProvidedPropertyAttribute.cs
- PersistChildrenAttribute.cs
- SqlVisitor.cs
- RecordBuilder.cs
- LicenseManager.cs
- EdgeModeValidation.cs
- DataGridColumnsPage.cs
- JapaneseLunisolarCalendar.cs
- SQLResource.cs
- FusionWrap.cs
- ImageFormatConverter.cs
- MobileUITypeEditor.cs
- RemotingClientProxy.cs
- RuntimeResourceSet.cs
- TreeNodeStyleCollection.cs
- FacetEnabledSchemaElement.cs
- AuthenticationSection.cs
- FindCriteria.cs
- Image.cs
- EndPoint.cs
- GridView.cs
- ButtonBaseAdapter.cs
- EditorPart.cs
- XPathMessageFilter.cs
- ColumnClickEvent.cs
- TextBox.cs
- PathGeometry.cs
- CustomAttributeBuilder.cs
- CommandPlan.cs
- DefaultValueAttribute.cs
- MetadataItem_Static.cs
- WebContext.cs
- WindowsTab.cs
- Contracts.cs
- HtmlInputText.cs
- ResourceDictionary.cs
- ContentValidator.cs
- DPTypeDescriptorContext.cs
- DependencyObjectType.cs
- LineBreak.cs
- ActivityStateRecord.cs
- ImportCatalogPart.cs
- HwndProxyElementProvider.cs
- CallInfo.cs
- ComponentRenameEvent.cs
- SoapReflectionImporter.cs
- SystemWebCachingSectionGroup.cs
- SingleQueryOperator.cs
- StringArrayConverter.cs
- CanonicalXml.cs
- GeneralTransformGroup.cs
- FlagsAttribute.cs
- PropertyRecord.cs
- Polygon.cs
- CollectionContainer.cs
- HostingEnvironmentSection.cs
- GridViewCancelEditEventArgs.cs
- HTTPNotFoundHandler.cs
- HtmlWindow.cs
- ImageListImageEditor.cs
- WebException.cs
- PeerNodeAddress.cs
- Selection.cs
- InterleavedZipPartStream.cs
- MulticastOption.cs
- XmlWriterSettings.cs
- EllipseGeometry.cs
- ChannelFactoryBase.cs
- PolicyManager.cs
- Baml2006KnownTypes.cs
- PaginationProgressEventArgs.cs
- _HTTPDateParse.cs
- Marshal.cs
- HttpAsyncResult.cs
- RowUpdatingEventArgs.cs
- AdornerDecorator.cs
- Camera.cs
- HealthMonitoringSection.cs
- BindingList.cs
- NavigationWindow.cs
- SafeRightsManagementHandle.cs
- recordstatescratchpad.cs
- VBCodeProvider.cs
- StringTraceRecord.cs
- dbdatarecord.cs
- FontEmbeddingManager.cs
- xmlsaver.cs
- SqlGatherProducedAliases.cs
- SoapAttributeAttribute.cs
- DataPagerCommandEventArgs.cs
- precedingsibling.cs
- _IPv4Address.cs