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
- SizeFConverter.cs
- RtfNavigator.cs
- ScopedKnownTypes.cs
- PropertyDescriptor.cs
- CodeDOMProvider.cs
- WindowsRegion.cs
- ExtenderHelpers.cs
- ListView.cs
- InputBindingCollection.cs
- QueryTaskGroupState.cs
- BookmarkScopeManager.cs
- GridViewCommandEventArgs.cs
- MessageQueueInstaller.cs
- RequestCacheEntry.cs
- HtmlHistory.cs
- TextRangeEdit.cs
- OrderedDictionaryStateHelper.cs
- VisualSerializer.cs
- IChannel.cs
- InputBinding.cs
- WinFormsSecurity.cs
- CustomErrorCollection.cs
- CodeCompiler.cs
- MulticastDelegate.cs
- DeviceContext.cs
- XPathChildIterator.cs
- DateBoldEvent.cs
- HtmlElementEventArgs.cs
- BoundsDrawingContextWalker.cs
- KerberosTicketHashIdentifierClause.cs
- ResourcesBuildProvider.cs
- Control.cs
- DataListDesigner.cs
- PreviousTrackingServiceAttribute.cs
- InitializerFacet.cs
- SiteMapNode.cs
- MULTI_QI.cs
- MexTcpBindingElement.cs
- VersionPair.cs
- ListViewItemSelectionChangedEvent.cs
- HttpProfileGroupBase.cs
- ObjectDataSourceStatusEventArgs.cs
- ChildTable.cs
- ValueType.cs
- ObjectDataSourceView.cs
- DataObjectCopyingEventArgs.cs
- ServicePointManager.cs
- DataGridViewMethods.cs
- XPathPatternParser.cs
- FilePrompt.cs
- TextHidden.cs
- RootBrowserWindowAutomationPeer.cs
- DataObjectEventArgs.cs
- GetPageCompletedEventArgs.cs
- WebPartMenuStyle.cs
- MasterPageParser.cs
- EndpointDiscoveryElement.cs
- WriteableBitmap.cs
- Geometry3D.cs
- MaskedTextBoxTextEditor.cs
- CommonXSendMessage.cs
- ControlCollection.cs
- TransactionChannelFactory.cs
- ToolStripArrowRenderEventArgs.cs
- EntityContainerEmitter.cs
- ModelPropertyDescriptor.cs
- WorkflowIdleElement.cs
- Site.cs
- Update.cs
- FormDesigner.cs
- Model3DGroup.cs
- PropertyManager.cs
- HtmlTernaryTree.cs
- MonthCalendarDesigner.cs
- Quaternion.cs
- XmlCodeExporter.cs
- HierarchicalDataTemplate.cs
- TextRangeAdaptor.cs
- RSAOAEPKeyExchangeFormatter.cs
- AdornedElementPlaceholder.cs
- DataColumnMapping.cs
- TextFindEngine.cs
- UpdatePanelTriggerCollection.cs
- TableLayoutStyleCollection.cs
- SafeProcessHandle.cs
- InkSerializer.cs
- Cloud.cs
- StateWorkerRequest.cs
- Byte.cs
- XmlSortKey.cs
- Int32Converter.cs
- TiffBitmapDecoder.cs
- Brush.cs
- EpmContentSerializer.cs
- PingReply.cs
- WebPartMenu.cs
- XmlComplianceUtil.cs
- InvokeFunc.cs
- StringToken.cs
- KeyFrames.cs