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
- OdbcHandle.cs
- ThemeDirectoryCompiler.cs
- DataTemplateSelector.cs
- ColumnMap.cs
- ReferenceEqualityComparer.cs
- GestureRecognitionResult.cs
- InkCollectionBehavior.cs
- SortableBindingList.cs
- InterleavedZipPartStream.cs
- ParseHttpDate.cs
- Journaling.cs
- ExecutionContext.cs
- FileLogRecordEnumerator.cs
- PermissionSetEnumerator.cs
- BitmapEffectDrawing.cs
- EpmCustomContentDeSerializer.cs
- SessionViewState.cs
- GeneralTransform3DGroup.cs
- SafeNativeMethods.cs
- FusionWrap.cs
- _ListenerAsyncResult.cs
- LocalizationComments.cs
- Matrix3DConverter.cs
- ContentType.cs
- FixedLineResult.cs
- XNodeValidator.cs
- WebBrowserProgressChangedEventHandler.cs
- SortExpressionBuilder.cs
- QueryBranchOp.cs
- DataControlFieldCollection.cs
- NamespaceEmitter.cs
- EUCJPEncoding.cs
- AtomMaterializerLog.cs
- XamlPathDataSerializer.cs
- SafeCryptContextHandle.cs
- CompilerCollection.cs
- AssociationTypeEmitter.cs
- UIntPtr.cs
- DrawingContextDrawingContextWalker.cs
- ILGenerator.cs
- CellQuery.cs
- BinaryObjectWriter.cs
- RequestTimeoutManager.cs
- NameObjectCollectionBase.cs
- MessageContractExporter.cs
- XmlUtilWriter.cs
- TextFragmentEngine.cs
- SmiEventSink_DeferedProcessing.cs
- IntSecurity.cs
- ObjectQueryProvider.cs
- ParserOptions.cs
- ScriptServiceAttribute.cs
- parserscommon.cs
- CalendarBlackoutDatesCollection.cs
- DataGridItemEventArgs.cs
- TextRunCacheImp.cs
- Color.cs
- ExitEventArgs.cs
- DrawingContextDrawingContextWalker.cs
- OleDbRowUpdatedEvent.cs
- DataStreamFromComStream.cs
- ExpressionConverter.cs
- HtmlAnchor.cs
- DesignerSerializationOptionsAttribute.cs
- _ListenerRequestStream.cs
- BitmapInitialize.cs
- SecurityContext.cs
- Shared.cs
- MessageQueueTransaction.cs
- PasswordTextContainer.cs
- InternalEnumValidatorAttribute.cs
- LZCodec.cs
- DomNameTable.cs
- DbProviderFactory.cs
- OciEnlistContext.cs
- ExcCanonicalXml.cs
- TableLayoutPanel.cs
- CodeAttachEventStatement.cs
- CompiledQueryCacheKey.cs
- AuthorizationSection.cs
- SHA512.cs
- WasEndpointConfigContainer.cs
- MethodBody.cs
- CharUnicodeInfo.cs
- Font.cs
- CustomValidator.cs
- DataObjectAttribute.cs
- PresentationSource.cs
- FontDialog.cs
- RuntimeComponentFilter.cs
- UInt64Storage.cs
- NavigateEvent.cs
- InstanceOwner.cs
- AttributeProviderAttribute.cs
- ModelPropertyImpl.cs
- wmiprovider.cs
- OdbcFactory.cs
- NetworkCredential.cs
- ColorAnimation.cs
- DocumentAutomationPeer.cs