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
- ParseChildrenAsPropertiesAttribute.cs
- StringValidator.cs
- CryptoProvider.cs
- XamlStyleSerializer.cs
- ScaleTransform.cs
- BitConverter.cs
- SqlCachedBuffer.cs
- FieldNameLookup.cs
- StreamWriter.cs
- Odbc32.cs
- WebConfigurationManager.cs
- SettingsContext.cs
- TypeCodeDomSerializer.cs
- SafeProcessHandle.cs
- TextWriter.cs
- DockProviderWrapper.cs
- TextPointer.cs
- ProfileProvider.cs
- TemplatedMailWebEventProvider.cs
- _NetRes.cs
- LocationInfo.cs
- XPathScanner.cs
- DES.cs
- DesigntimeLicenseContext.cs
- ValueType.cs
- MasterPageBuildProvider.cs
- ToolStripContentPanel.cs
- RoleGroup.cs
- KeyedCollection.cs
- AppDomainShutdownMonitor.cs
- SelectionItemProviderWrapper.cs
- FileIOPermission.cs
- PointAnimationBase.cs
- ScriptResourceInfo.cs
- WSSecurityPolicy11.cs
- ActiveXSite.cs
- StackSpiller.Temps.cs
- PropertyOverridesTypeEditor.cs
- PropertyPathConverter.cs
- BypassElementCollection.cs
- ExpressionEditorAttribute.cs
- MessageHeaderT.cs
- StreamUpgradeBindingElement.cs
- remotingproxy.cs
- CompilerState.cs
- InputLanguageManager.cs
- ZoneLinkButton.cs
- SemaphoreFullException.cs
- EventSinkHelperWriter.cs
- MessageBox.cs
- EventProviderWriter.cs
- ReachPageContentSerializer.cs
- DecoderFallback.cs
- NotCondition.cs
- CanonicalXml.cs
- RawKeyboardInputReport.cs
- Configuration.cs
- Property.cs
- XsltLoader.cs
- FixedSOMSemanticBox.cs
- Helper.cs
- StorageFunctionMapping.cs
- NetWebProxyFinder.cs
- ObjectFullSpanRewriter.cs
- Char.cs
- StringPropertyBuilder.cs
- dbenumerator.cs
- UnsafeMethods.cs
- TypographyProperties.cs
- CompModSwitches.cs
- OleDbCommand.cs
- Helper.cs
- TaiwanCalendar.cs
- BaseDataBoundControl.cs
- ProxySimple.cs
- StickyNoteHelper.cs
- ResXDataNode.cs
- WebScriptMetadataInstanceContextProvider.cs
- ClonableStack.cs
- SQLStringStorage.cs
- FactoryGenerator.cs
- PointAnimationUsingPath.cs
- SqlReorderer.cs
- SizeValueSerializer.cs
- BaseTemplatedMobileComponentEditor.cs
- PageAsyncTaskManager.cs
- WebPartCollection.cs
- IChannel.cs
- NamespaceMapping.cs
- PreservationFileWriter.cs
- Highlights.cs
- WindowsToolbar.cs
- NavigationEventArgs.cs
- OutputCacheSection.cs
- XmlUtil.cs
- NamespaceList.cs
- TextSelectionHelper.cs
- XmlAnyElementAttribute.cs
- ViewGenerator.cs
- ContentPresenter.cs