Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Serializer / DependencyStoreSurrogate.cs / 1305376 / DependencyStoreSurrogate.cs
namespace System.Workflow.ComponentModel.Serialization { using System; using System.Xml; using System.Runtime.Serialization; using System.Reflection; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Collections; using System.Collections.Generic; #region DependencyStoreSurrogate internal sealed class DependencyStoreSurrogate : ISerializationSurrogate { internal DependencyStoreSurrogate() { } void ISerializationSurrogate.GetObjectData(object obj, SerializationInfo info, StreamingContext context) { IDictionarystore = obj as IDictionary ; if (store == null) throw new ArgumentException("obj"); ArrayList properties = new ArrayList(); ArrayList values = new ArrayList(); foreach (KeyValuePair kvp in store) { if (!kvp.Key.DefaultMetadata.IsNonSerialized) { if (kvp.Key.IsKnown) properties.Add(kvp.Key.KnownIndex); else properties.Add(kvp.Key); values.Add(kvp.Value); } } info.AddValue("keys", properties.ToArray()); info.AddValue("values", values.ToArray()); info.SetType(typeof(DependencyStoreRef)); } object ISerializationSurrogate.SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) { return null; } #region DependencyStoreRef [Serializable] private sealed class DependencyStoreRef : IObjectReference, IDeserializationCallback { private IList keys = null; private IList values = null; [NonSerialized] private IDictionary store = null; Object IObjectReference.GetRealObject(StreamingContext context) { if (this.store == null) this.store = new Dictionary (); return this.store; } void IDeserializationCallback.OnDeserialization(Object sender) { if (this.store != null) { for (int index = 0; index < this.keys.Count; index++) { DependencyProperty dp = this.keys[index] as DependencyProperty; if (dp == null) dp = DependencyProperty.FromKnown((byte)this.keys[index]); this.store.Add(dp, this.values[index]); } } this.store = null; } } #endregion } #endregion } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. namespace System.Workflow.ComponentModel.Serialization { using System; using System.Xml; using System.Runtime.Serialization; using System.Reflection; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Collections; using System.Collections.Generic; #region DependencyStoreSurrogate internal sealed class DependencyStoreSurrogate : ISerializationSurrogate { internal DependencyStoreSurrogate() { } void ISerializationSurrogate.GetObjectData(object obj, SerializationInfo info, StreamingContext context) { IDictionary store = obj as IDictionary ; if (store == null) throw new ArgumentException("obj"); ArrayList properties = new ArrayList(); ArrayList values = new ArrayList(); foreach (KeyValuePair kvp in store) { if (!kvp.Key.DefaultMetadata.IsNonSerialized) { if (kvp.Key.IsKnown) properties.Add(kvp.Key.KnownIndex); else properties.Add(kvp.Key); values.Add(kvp.Value); } } info.AddValue("keys", properties.ToArray()); info.AddValue("values", values.ToArray()); info.SetType(typeof(DependencyStoreRef)); } object ISerializationSurrogate.SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) { return null; } #region DependencyStoreRef [Serializable] private sealed class DependencyStoreRef : IObjectReference, IDeserializationCallback { private IList keys = null; private IList values = null; [NonSerialized] private IDictionary store = null; Object IObjectReference.GetRealObject(StreamingContext context) { if (this.store == null) this.store = new Dictionary (); return this.store; } void IDeserializationCallback.OnDeserialization(Object sender) { if (this.store != null) { for (int index = 0; index < this.keys.Count; index++) { DependencyProperty dp = this.keys[index] as DependencyProperty; if (dp == null) dp = DependencyProperty.FromKnown((byte)this.keys[index]); this.store.Add(dp, this.values[index]); } } this.store = null; } } #endregion } #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
- ToolStripItemRenderEventArgs.cs
- iisPickupDirectory.cs
- GroupBox.cs
- SQLInt32Storage.cs
- ArrayList.cs
- BamlRecordWriter.cs
- MenuItemStyleCollection.cs
- IteratorFilter.cs
- WindowsBrush.cs
- OleDbReferenceCollection.cs
- Point.cs
- DesignerCategoryAttribute.cs
- SoapWriter.cs
- StrokeDescriptor.cs
- WindowsRegion.cs
- CodeDirectoryCompiler.cs
- SQLBoolean.cs
- CancelEventArgs.cs
- CharEntityEncoderFallback.cs
- EnumConverter.cs
- ExtenderProvidedPropertyAttribute.cs
- RewritingPass.cs
- GenericIdentity.cs
- DataObject.cs
- CookielessHelper.cs
- EventLogConfiguration.cs
- ImageCodecInfo.cs
- TypedReference.cs
- CryptoProvider.cs
- RegionInfo.cs
- ExtendedPropertyCollection.cs
- OpCopier.cs
- XmlIgnoreAttribute.cs
- OrderedHashRepartitionStream.cs
- WebPartZoneCollection.cs
- AdornerPresentationContext.cs
- CharacterShapingProperties.cs
- SqlCacheDependency.cs
- QueryCacheManager.cs
- SemaphoreFullException.cs
- AutomationPropertyInfo.cs
- EmptyWithCancelationCheckWorkItem.cs
- DataGridViewAdvancedBorderStyle.cs
- ellipse.cs
- TypeDescriptor.cs
- ClientScriptItem.cs
- WsdlBuildProvider.cs
- Utils.cs
- connectionpool.cs
- ReadContentAsBinaryHelper.cs
- CreateUserWizard.cs
- UInt64Storage.cs
- Scheduler.cs
- DescendantBaseQuery.cs
- LineVisual.cs
- MappingMetadataHelper.cs
- OleDbRowUpdatedEvent.cs
- MarkerProperties.cs
- X509Extension.cs
- Message.cs
- AxHost.cs
- Int64.cs
- Grid.cs
- CodeTypeOfExpression.cs
- ExpandSegment.cs
- Line.cs
- PipeSecurity.cs
- Paragraph.cs
- Script.cs
- GraphicsState.cs
- CorrelationKeyCalculator.cs
- SolidColorBrush.cs
- InheritanceAttribute.cs
- TypeLoadException.cs
- ScriptRef.cs
- TypeConverterMarkupExtension.cs
- PTConverter.cs
- PrintingPermissionAttribute.cs
- ShadowGlyph.cs
- ActiveDocumentEvent.cs
- StorageEntitySetMapping.cs
- BamlLocalizableResource.cs
- StylusLogic.cs
- ChannelCacheDefaults.cs
- dataSvcMapFileLoader.cs
- OdbcEnvironmentHandle.cs
- Tool.cs
- versioninfo.cs
- SafeNativeMethodsMilCoreApi.cs
- OpCodes.cs
- ItemType.cs
- WebPartUserCapability.cs
- LinqDataSourceEditData.cs
- ValidationSummary.cs
- cryptoapiTransform.cs
- GZipStream.cs
- BindingMemberInfo.cs
- FontSizeConverter.cs
- altserialization.cs
- Int64Storage.cs