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
- IListConverters.cs
- _Win32.cs
- QilTargetType.cs
- PeerInputChannel.cs
- StateInitializationDesigner.cs
- AssemblyUtil.cs
- MimeBasePart.cs
- UserPersonalizationStateInfo.cs
- TextElement.cs
- StorageMappingItemCollection.cs
- ParenExpr.cs
- ConsumerConnectionPointCollection.cs
- FindResponse.cs
- CopyOnWriteList.cs
- ExpressionTextBoxAutomationPeer.cs
- ImportContext.cs
- UnsafeNativeMethods.cs
- SoapIncludeAttribute.cs
- HttpFileCollection.cs
- IntPtr.cs
- WindowsContainer.cs
- CultureSpecificStringDictionary.cs
- ConfigXmlSignificantWhitespace.cs
- SplitContainer.cs
- DSASignatureDeformatter.cs
- AssertUtility.cs
- MenuItem.cs
- SerializationStore.cs
- XmlSchemaElement.cs
- DummyDataSource.cs
- CharAnimationUsingKeyFrames.cs
- LicFileLicenseProvider.cs
- ConcurrentDictionary.cs
- GridSplitterAutomationPeer.cs
- BrowserCapabilitiesFactory35.cs
- ConfigsHelper.cs
- SqlConnectionManager.cs
- DataAdapter.cs
- ListViewAutomationPeer.cs
- XmlSchemaComplexContent.cs
- Win32.cs
- FigureHelper.cs
- UserMapPath.cs
- InlinedLocationReference.cs
- ProvideValueServiceProvider.cs
- UserNameServiceElement.cs
- DBConcurrencyException.cs
- Vars.cs
- HttpSessionStateBase.cs
- SimplePropertyEntry.cs
- XamlReader.cs
- CdpEqualityComparer.cs
- compensatingcollection.cs
- SqlNamer.cs
- HttpGetProtocolImporter.cs
- StorageComplexTypeMapping.cs
- WebDisplayNameAttribute.cs
- _SecureChannel.cs
- AuthenticationService.cs
- DefaultClaimSet.cs
- IpcClientChannel.cs
- XmlNamespaceMappingCollection.cs
- HttpConfigurationContext.cs
- XsltArgumentList.cs
- XmlTextReader.cs
- DataServiceRequestOfT.cs
- Environment.cs
- TextClipboardData.cs
- TrustManagerMoreInformation.cs
- HttpGetProtocolImporter.cs
- PresentationTraceSources.cs
- VirtualizingPanel.cs
- UriSection.cs
- XmlSchemaComplexContentExtension.cs
- BindingOperations.cs
- DataControlButton.cs
- InstallerTypeAttribute.cs
- FilterQueryOptionExpression.cs
- HtmlWindowCollection.cs
- IItemContainerGenerator.cs
- DataControlLinkButton.cs
- UnicodeEncoding.cs
- SemanticResultValue.cs
- CompositeDataBoundControl.cs
- Exceptions.cs
- RegionData.cs
- DateRangeEvent.cs
- SharedUtils.cs
- SettingsProviderCollection.cs
- rsa.cs
- WebBaseEventKeyComparer.cs
- NTAccount.cs
- LinqToSqlWrapper.cs
- unsafeIndexingFilterStream.cs
- Point4DConverter.cs
- TextTreeObjectNode.cs
- InstanceKeyNotReadyException.cs
- SecureConversationServiceElement.cs
- Connector.cs
- ExtendedPropertiesHandler.cs