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
- XamlValidatingReader.cs
- DispatcherTimer.cs
- ApplicationSecurityInfo.cs
- SystemIcmpV6Statistics.cs
- DescendantQuery.cs
- SqlMethodAttribute.cs
- AggregateNode.cs
- RegexTree.cs
- TextBoxBase.cs
- Condition.cs
- ValuePattern.cs
- FormViewDeletedEventArgs.cs
- WebSysDisplayNameAttribute.cs
- TemplateControlBuildProvider.cs
- SqlUDTStorage.cs
- WebResourceUtil.cs
- MobileControlDesigner.cs
- DbExpressionVisitor.cs
- ComponentSerializationService.cs
- SqlRowUpdatingEvent.cs
- ProtocolsConfigurationHandler.cs
- WebServiceParameterData.cs
- LabelExpression.cs
- WindowsAuthenticationModule.cs
- BadImageFormatException.cs
- glyphs.cs
- ReadOnlyTernaryTree.cs
- PageTextBox.cs
- DPAPIProtectedConfigurationProvider.cs
- ReferentialConstraint.cs
- CodeDomLoader.cs
- TextRangeAdaptor.cs
- PolicyException.cs
- TreeNodeMouseHoverEvent.cs
- ActivityExecutorSurrogate.cs
- BeginStoryboard.cs
- HtmlControlDesigner.cs
- ListViewGroup.cs
- ProxyWebPartConnectionCollection.cs
- ParameterToken.cs
- BitmapDownload.cs
- WebBrowsableAttribute.cs
- TreeNodeBinding.cs
- XmlHierarchicalDataSourceView.cs
- GenerateHelper.cs
- XmlProcessingInstruction.cs
- RegexRunnerFactory.cs
- XmlSchemaImporter.cs
- ListDictionary.cs
- AssemblyFilter.cs
- CallbackValidator.cs
- SimpleParser.cs
- GetImportedCardRequest.cs
- StateDesignerConnector.cs
- ToolStripItemClickedEventArgs.cs
- TemplatePagerField.cs
- Utils.cs
- ComponentEvent.cs
- TreeIterator.cs
- XmlNodeComparer.cs
- CustomSignedXml.cs
- RepeaterCommandEventArgs.cs
- IndentedTextWriter.cs
- HtmlTable.cs
- PrtCap_Builder.cs
- DocumentSequence.cs
- DesigntimeLicenseContext.cs
- RelationshipEndCollection.cs
- OleDbError.cs
- NativeMethods.cs
- DocumentViewerHelper.cs
- XslCompiledTransform.cs
- EntityCommand.cs
- StructuralObject.cs
- ProcessStartInfo.cs
- CultureData.cs
- PerspectiveCamera.cs
- LongAverageAggregationOperator.cs
- ConfigurationStrings.cs
- Control.cs
- DbParameterCollectionHelper.cs
- WebControl.cs
- InvalidateEvent.cs
- ActiveDesignSurfaceEvent.cs
- AddInEnvironment.cs
- SignatureToken.cs
- PtsContext.cs
- ThemeDictionaryExtension.cs
- CfgArc.cs
- ObjectAnimationBase.cs
- PointCollectionValueSerializer.cs
- FocusManager.cs
- DocumentCollection.cs
- HttpRequest.cs
- FrameAutomationPeer.cs
- ValueTypeFieldReference.cs
- FtpWebResponse.cs
- SizeAnimationClockResource.cs
- graph.cs
- TreeNodeCollectionEditor.cs