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
- CqlErrorHelper.cs
- ImplicitInputBrush.cs
- ByeOperationCD1AsyncResult.cs
- EndPoint.cs
- ThicknessAnimationUsingKeyFrames.cs
- VideoDrawing.cs
- AsyncContentLoadedEventArgs.cs
- InterleavedZipPartStream.cs
- _UriSyntax.cs
- XmlSchemaAny.cs
- DatatypeImplementation.cs
- DbProviderFactoriesConfigurationHandler.cs
- TreeNode.cs
- TTSVoice.cs
- DoubleLinkList.cs
- CodeVariableDeclarationStatement.cs
- TrustSection.cs
- StreamReader.cs
- IBuiltInEvidence.cs
- CategoryNameCollection.cs
- DbDataRecord.cs
- CustomErrorsSection.cs
- SQLInt16.cs
- WindowsTokenRoleProvider.cs
- SmiTypedGetterSetter.cs
- DataColumnChangeEvent.cs
- ChannelEndpointElement.cs
- ResourceKey.cs
- UndirectedGraph.cs
- BitArray.cs
- Animatable.cs
- FlagsAttribute.cs
- CompressionTransform.cs
- Vars.cs
- SafeRightsManagementHandle.cs
- SizeFConverter.cs
- CommandPlan.cs
- ToolStripContentPanelRenderEventArgs.cs
- _BaseOverlappedAsyncResult.cs
- SecurityKeyEntropyMode.cs
- OperandQuery.cs
- DynamicMethod.cs
- SamlAuthorizationDecisionClaimResource.cs
- GridViewItemAutomationPeer.cs
- ConsoleTraceListener.cs
- EndPoint.cs
- SessionStateItemCollection.cs
- DataServiceSaveChangesEventArgs.cs
- ActiveXHost.cs
- PasswordBoxAutomationPeer.cs
- RecognitionResult.cs
- ProvidePropertyAttribute.cs
- CLSCompliantAttribute.cs
- DesignerCategoryAttribute.cs
- ToolStripDropDownMenu.cs
- DrawingContextWalker.cs
- OleDbException.cs
- ColorMap.cs
- UserPersonalizationStateInfo.cs
- PerformanceCounterManager.cs
- PartManifestEntry.cs
- PermissionAttributes.cs
- DecodeHelper.cs
- SafeCertificateContext.cs
- WebSysDisplayNameAttribute.cs
- SqlSelectStatement.cs
- BatchServiceHost.cs
- errorpatternmatcher.cs
- XmlRawWriter.cs
- CodeExpressionCollection.cs
- HistoryEventArgs.cs
- FixedStringLookup.cs
- DataGridViewColumnStateChangedEventArgs.cs
- PasswordBoxAutomationPeer.cs
- RegexInterpreter.cs
- ResourceDisplayNameAttribute.cs
- ApplicationServicesHostFactory.cs
- ArrangedElement.cs
- FixedSchema.cs
- StatusBarItemAutomationPeer.cs
- UnSafeCharBuffer.cs
- StoreContentChangedEventArgs.cs
- Msmq4SubqueuePoisonHandler.cs
- Label.cs
- VisualCollection.cs
- PocoPropertyAccessorStrategy.cs
- CodeDelegateInvokeExpression.cs
- ValueConversionAttribute.cs
- RecognizeCompletedEventArgs.cs
- _IPv6Address.cs
- DataGridViewColumn.cs
- OutputCacheSettings.cs
- PanelDesigner.cs
- CounterCreationDataConverter.cs
- IDReferencePropertyAttribute.cs
- AttachedPropertyBrowsableForChildrenAttribute.cs
- ContentDisposition.cs
- ResizeGrip.cs
- RequestQueue.cs
- XmlHierarchyData.cs