Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Serializer / CollectionMarkupSerializer.cs / 1305376 / CollectionMarkupSerializer.cs
namespace System.Workflow.ComponentModel.Serialization { using System; using System.IO; using System.CodeDom; using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Collections; using System.Xml; using System.Xml.Serialization; using System.Reflection; using System.Collections.Generic; using System.Diagnostics; using System.Text; using System.Globalization; using System.Workflow.ComponentModel.Compiler; using System.Workflow.ComponentModel.Design; using System.Runtime.Serialization; using System.Security.Permissions; using System.Collections.ObjectModel; using System.Drawing; #region Class CollectionMarkupSerializer internal class CollectionMarkupSerializer : WorkflowMarkupSerializer { protected internal override IList GetChildren(WorkflowMarkupSerializationManager serializationManager, object obj) { if (obj == null) throw new ArgumentNullException("obj"); if (!IsValidCollectionType(obj.GetType())) throw new Exception(SR.GetString(SR.Error_SerializerTypeRequirement, obj.GetType().FullName, typeof(ICollection).FullName, typeof(ICollection<>).FullName)); IEnumerable enumerable = obj as IEnumerable; ArrayList arrayList = new ArrayList(); foreach (object containedObj in enumerable) arrayList.Add(containedObj); return arrayList; } protected internal override PropertyInfo[] GetProperties(WorkflowMarkupSerializationManager serializationManager, object obj) { return new PropertyInfo[] { }; } protected internal override bool ShouldSerializeValue(WorkflowMarkupSerializationManager serializationManager, object value) { if (value == null) return false; if (!IsValidCollectionType(value.GetType())) throw new Exception(SR.GetString(SR.Error_SerializerTypeRequirement, value.GetType().FullName, typeof(ICollection).FullName, typeof(ICollection<>).FullName)); IEnumerable enumerable = value as IEnumerable; foreach (object obj in enumerable) return true; return false; } protected internal override void ClearChildren(WorkflowMarkupSerializationManager serializationManager, object obj) { if (obj == null) throw new ArgumentNullException("obj"); if (!IsValidCollectionType(obj.GetType())) throw new Exception(SR.GetString(SR.Error_SerializerTypeRequirement, obj.GetType().FullName, typeof(ICollection).FullName, typeof(ICollection<>).FullName)); ICollection collection = obj as ICollection; if (collection == null) obj.GetType().InvokeMember("Clear", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance, null, obj, new object[] {}, CultureInfo.InvariantCulture); } protected internal override void AddChild(WorkflowMarkupSerializationManager serializationManager, object parentObj, object childObj) { if (parentObj == null) throw new ArgumentNullException("parentObj"); if (!IsValidCollectionType(parentObj.GetType())) throw new Exception(SR.GetString(SR.Error_SerializerTypeRequirement, parentObj.GetType().FullName, typeof(ICollection).FullName, typeof(ICollection<>).FullName)); parentObj.GetType().InvokeMember("Add", BindingFlags.Public | BindingFlags.InvokeMethod | BindingFlags.Instance, null, parentObj, new object[] { childObj }, CultureInfo.InvariantCulture); } internal static bool IsValidCollectionType(Type collectionType) { if (collectionType == null) return false; if (typeof(Array).IsAssignableFrom(collectionType)) return false; return (typeof(ICollection).IsAssignableFrom(collectionType) || (collectionType.IsGenericType && (typeof(ICollection<>).IsAssignableFrom(collectionType.GetGenericTypeDefinition()) || typeof(IList<>).IsAssignableFrom(collectionType.GetGenericTypeDefinition())))); } } #endregion } // 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
- VirtualDirectoryMappingCollection.cs
- SQLResource.cs
- ImageFormat.cs
- ParagraphVisual.cs
- WriteFileContext.cs
- CustomError.cs
- ExternalException.cs
- BindingListCollectionView.cs
- ExecutedRoutedEventArgs.cs
- EntityException.cs
- TextRangeEdit.cs
- Itemizer.cs
- XmlUrlResolver.cs
- XmlDocumentType.cs
- LifetimeManager.cs
- SecurityToken.cs
- StatusBar.cs
- KeyGesture.cs
- DbProviderFactoriesConfigurationHandler.cs
- TokenizerHelper.cs
- WindowsListView.cs
- EntityProviderServices.cs
- WebServiceClientProxyGenerator.cs
- FieldTemplateFactory.cs
- EditorPartCollection.cs
- ParameterCollectionEditor.cs
- NativeMethodsCLR.cs
- SoapProtocolImporter.cs
- ISCIIEncoding.cs
- FormsAuthentication.cs
- CodeMemberEvent.cs
- ObfuscateAssemblyAttribute.cs
- NextPreviousPagerField.cs
- OleTxTransaction.cs
- BatchStream.cs
- WebBrowserHelper.cs
- DoubleConverter.cs
- WebBrowser.cs
- ControlTemplate.cs
- AstTree.cs
- ConstantSlot.cs
- StorageEntityTypeMapping.cs
- XamlGridLengthSerializer.cs
- CompiledRegexRunnerFactory.cs
- HttpProcessUtility.cs
- UserControlAutomationPeer.cs
- BStrWrapper.cs
- ColorContext.cs
- AppDomainProtocolHandler.cs
- BadImageFormatException.cs
- HighlightComponent.cs
- FileSystemInfo.cs
- Security.cs
- BindingMAnagerBase.cs
- FontFamilyConverter.cs
- HttpServerUtilityWrapper.cs
- MasterPage.cs
- ClassicBorderDecorator.cs
- StateRuntime.cs
- storepermission.cs
- EndOfStreamException.cs
- ConstraintStruct.cs
- PropertyValueUIItem.cs
- UInt32.cs
- ConnectionsZone.cs
- SimpleRecyclingCache.cs
- EdmComplexPropertyAttribute.cs
- SchemaConstraints.cs
- FacetDescriptionElement.cs
- ErrorTolerantObjectWriter.cs
- InternalResources.cs
- IsolatedStoragePermission.cs
- XmlSerializerFactory.cs
- Single.cs
- PersistenceTypeAttribute.cs
- XamlStyleSerializer.cs
- ConfigurationLocationCollection.cs
- GradientStop.cs
- TableLayoutCellPaintEventArgs.cs
- StreamWriter.cs
- storagemappingitemcollection.viewdictionary.cs
- SynchronizedChannelCollection.cs
- FormatStringEditor.cs
- TextProviderWrapper.cs
- CompositeFontParser.cs
- TextProviderWrapper.cs
- HostVisual.cs
- FontSizeConverter.cs
- RichTextBox.cs
- IxmlLineInfo.cs
- BlobPersonalizationState.cs
- AssemblyBuilder.cs
- SortedList.cs
- StorageAssociationSetMapping.cs
- Separator.cs
- Win32MouseDevice.cs
- XsltException.cs
- StateMachineSubscriptionManager.cs
- MemberPath.cs
- PrintControllerWithStatusDialog.cs