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
- Material.cs
- XmlElementList.cs
- Exceptions.cs
- Walker.cs
- PerformanceCounterManager.cs
- Base64Stream.cs
- Iis7Helper.cs
- SessionIDManager.cs
- RequestResponse.cs
- SequentialWorkflowRootDesigner.cs
- Durable.cs
- OLEDB_Util.cs
- OrderedDictionary.cs
- DecimalAnimation.cs
- ProvidersHelper.cs
- BuildDependencySet.cs
- XPathNodeInfoAtom.cs
- PagedDataSource.cs
- DiffuseMaterial.cs
- SQLDouble.cs
- DbMetaDataColumnNames.cs
- DataRowCollection.cs
- ObjectContextServiceProvider.cs
- ZipIOFileItemStream.cs
- HttpCapabilitiesEvaluator.cs
- ConcatQueryOperator.cs
- XmlReaderSettings.cs
- RenderCapability.cs
- SqlTriggerContext.cs
- AspNetHostingPermission.cs
- RelativeSource.cs
- FormsAuthenticationCredentials.cs
- ApplicationManager.cs
- StringPropertyBuilder.cs
- ErrorEventArgs.cs
- AuthorizationRule.cs
- BaseParser.cs
- TemplateBamlTreeBuilder.cs
- FormsAuthenticationConfiguration.cs
- VariableQuery.cs
- XNodeValidator.cs
- DateTimeConstantAttribute.cs
- ResolveCompletedEventArgs.cs
- SortDescription.cs
- EntityCollection.cs
- UnsafeNativeMethods.cs
- _NegotiateClient.cs
- SnapshotChangeTrackingStrategy.cs
- MenuItemBinding.cs
- WindowsProgressbar.cs
- _NegoState.cs
- ConnectionManagementElement.cs
- StylusLogic.cs
- XhtmlBasicFormAdapter.cs
- SqlInfoMessageEvent.cs
- XsltContext.cs
- DataGridItemCollection.cs
- WindowsAuthenticationEventArgs.cs
- UIElementParaClient.cs
- DrawToolTipEventArgs.cs
- ApplicationSecurityManager.cs
- DataBoundLiteralControl.cs
- FeatureAttribute.cs
- CommonDialog.cs
- SpeechSynthesizer.cs
- sqlcontext.cs
- EntityModelBuildProvider.cs
- NoClickablePointException.cs
- StringPropertyBuilder.cs
- ConfigUtil.cs
- DataKeyCollection.cs
- Thickness.cs
- DateTimeOffsetStorage.cs
- UnsafeNativeMethods.cs
- SizeConverter.cs
- FocusChangedEventArgs.cs
- EncodingTable.cs
- JoinElimination.cs
- ConversionValidationRule.cs
- SequentialUshortCollection.cs
- AnimationClockResource.cs
- UserControl.cs
- FlowLayout.cs
- Preprocessor.cs
- CreateUserErrorEventArgs.cs
- TracedNativeMethods.cs
- DataErrorValidationRule.cs
- PersonalizationProviderHelper.cs
- ParallelLoopState.cs
- PhoneCall.cs
- PartitionResolver.cs
- UniqueTransportManagerRegistration.cs
- ElementHost.cs
- Rectangle.cs
- NativeMethods.cs
- EmptyQuery.cs
- FusionWrap.cs
- TextTreeRootNode.cs
- CustomError.cs
- Type.cs