Code:
/ FX-1434 / FX-1434 / 1.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
- Int16AnimationUsingKeyFrames.cs
- ManagementInstaller.cs
- WebEvents.cs
- KeyInfo.cs
- XmlTextReader.cs
- ResourceProviderFactory.cs
- XmlSerializerVersionAttribute.cs
- TableItemStyle.cs
- ResourceProperty.cs
- StickyNoteAnnotations.cs
- CompilerLocalReference.cs
- MultipartIdentifier.cs
- CallSite.cs
- MethodBuilder.cs
- MimeFormImporter.cs
- CalendarDataBindingHandler.cs
- HwndHost.cs
- TransactionTable.cs
- ScrollData.cs
- AuthenticationModulesSection.cs
- IsolatedStorageFilePermission.cs
- RemotingAttributes.cs
- HttpProfileGroupBase.cs
- ActiveXHost.cs
- CompilerWrapper.cs
- DecoderFallback.cs
- UiaCoreTypesApi.cs
- VirtualDirectoryMappingCollection.cs
- WeakEventManager.cs
- ZipIORawDataFileBlock.cs
- Normalizer.cs
- _LoggingObject.cs
- HtmlButton.cs
- AnnotationMap.cs
- StandardToolWindows.cs
- CloseCryptoHandleRequest.cs
- ChangeTracker.cs
- BuildDependencySet.cs
- ManifestResourceInfo.cs
- ErrorTolerantObjectWriter.cs
- XmlWrappingReader.cs
- ToolStripSplitButton.cs
- FormattedText.cs
- DbgUtil.cs
- WebControl.cs
- RuntimeCompatibilityAttribute.cs
- SortKey.cs
- Rotation3DKeyFrameCollection.cs
- QuaternionAnimation.cs
- LayoutEvent.cs
- ProgressBarRenderer.cs
- ExpressionEditorAttribute.cs
- SubpageParaClient.cs
- GroupBox.cs
- BackgroundWorker.cs
- _UriSyntax.cs
- DataSvcMapFile.cs
- MissingSatelliteAssemblyException.cs
- RepeatBehavior.cs
- httpapplicationstate.cs
- Enlistment.cs
- FilterableAttribute.cs
- LinkDescriptor.cs
- TraceContextEventArgs.cs
- ReferencedType.cs
- PerfCounters.cs
- WindowsFormsHostPropertyMap.cs
- RuntimeComponentFilter.cs
- DomainConstraint.cs
- NetWebProxyFinder.cs
- RepeaterItemCollection.cs
- RelatedImageListAttribute.cs
- GACMembershipCondition.cs
- Function.cs
- SerializationInfoEnumerator.cs
- MetadataArtifactLoaderComposite.cs
- ConfigurationLoader.cs
- NamedPermissionSet.cs
- StorageBasedPackageProperties.cs
- PolicyManager.cs
- TextSpanModifier.cs
- RsaEndpointIdentity.cs
- RuntimeTransactionHandle.cs
- TypeElement.cs
- RenameRuleObjectDialog.cs
- CqlLexerHelpers.cs
- WorkflowMarkupElementEventArgs.cs
- SafeNativeMethods.cs
- _NTAuthentication.cs
- PropertyOverridesTypeEditor.cs
- ISessionStateStore.cs
- Positioning.cs
- OutputCacheSettings.cs
- LogicalTreeHelper.cs
- OutputScopeManager.cs
- WsatProxy.cs
- KerberosRequestorSecurityTokenAuthenticator.cs
- PresentationAppDomainManager.cs
- CodeDomExtensionMethods.cs
- OleDbSchemaGuid.cs