namespace System.Workflow.ComponentModel.Serialization { using System; using System.ComponentModel.Design.Serialization; #region Class ActivityMarkupSerializationProvider internal sealed class ActivityMarkupSerializationProvider : WorkflowMarkupSerializationProvider { public override object GetSerializer(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 (serializerType != typeof(WorkflowMarkupSerializer) || currentSerializer != null) return null; if (typeof(CompositeActivity).IsAssignableFrom(objectType)) return new CompositeActivityMarkupSerializer(); if (typeof(ItemList<>).IsAssignableFrom(objectType)) return new CollectionMarkupSerializer(); // Ask the base class if it has a specialized serializer class for this object type. If it returns // its default serializer, return our default serializer instead. IDesignerSerializationProvider baseProvider = new WorkflowMarkupSerializationProvider() as IDesignerSerializationProvider; object baseSerializer = baseProvider.GetSerializer(manager, currentSerializer, objectType, serializerType); if (baseSerializer.GetType() != typeof(WorkflowMarkupSerializer)) return baseSerializer; return new ActivityMarkupSerializer(); } } #endregion }