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
- QueryStringParameter.cs
- ConstNode.cs
- TagPrefixInfo.cs
- TripleDES.cs
- WebPartConnectionsConfigureVerb.cs
- SimpleTextLine.cs
- CounterCreationDataCollection.cs
- BitmapEncoder.cs
- DataSourceXmlAttributeAttribute.cs
- DataTemplateKey.cs
- ThemeDictionaryExtension.cs
- Span.cs
- PreloadedPackages.cs
- ContractListAdapter.cs
- BuilderPropertyEntry.cs
- Utility.cs
- EdmRelationshipRoleAttribute.cs
- LocatorBase.cs
- Compensate.cs
- SqlGenerator.cs
- AssemblyAttributesGoHere.cs
- CreatingCookieEventArgs.cs
- SetStateEventArgs.cs
- DataBindEngine.cs
- RotateTransform.cs
- StylusButtonEventArgs.cs
- LiteralText.cs
- FlatButtonAppearance.cs
- BlockUIContainer.cs
- prefixendpointaddressmessagefiltertable.cs
- ComponentManagerBroker.cs
- ListViewItem.cs
- CRYPTPROTECT_PROMPTSTRUCT.cs
- GroupBox.cs
- ForeignConstraint.cs
- ProfileManager.cs
- DialogWindow.cs
- StorageTypeMapping.cs
- IDictionary.cs
- WebPartPersonalization.cs
- DataGridViewCellStyleChangedEventArgs.cs
- AlphabeticalEnumConverter.cs
- EntityKeyElement.cs
- figurelengthconverter.cs
- TCEAdapterGenerator.cs
- DataSourceExpressionCollection.cs
- DecoderFallbackWithFailureFlag.cs
- DataGridViewImageCell.cs
- FilteredAttributeCollection.cs
- ReferentialConstraintRoleElement.cs
- DataGridViewAutoSizeModeEventArgs.cs
- DateTimeUtil.cs
- CrossSiteScriptingValidation.cs
- DataColumnPropertyDescriptor.cs
- HtmlInputSubmit.cs
- ExpressionPrefixAttribute.cs
- ComboBoxItem.cs
- WeakReferenceKey.cs
- CachedFontFace.cs
- DataGridToolTip.cs
- Compiler.cs
- DefaultSettingsSection.cs
- EntityDataSourceValidationException.cs
- InvalidOperationException.cs
- DataGridRowHeaderAutomationPeer.cs
- PermissionToken.cs
- BindingMAnagerBase.cs
- StylusPointPropertyInfoDefaults.cs
- InitializingNewItemEventArgs.cs
- DbQueryCommandTree.cs
- SymbolPair.cs
- TcpServerChannel.cs
- StringSorter.cs
- WindowsUpDown.cs
- SelectionUIService.cs
- ImageKeyConverter.cs
- VSWCFServiceContractGenerator.cs
- XsltCompileContext.cs
- Bits.cs
- HtmlHead.cs
- AtomMaterializer.cs
- RangeContentEnumerator.cs
- SoapElementAttribute.cs
- BaseAsyncResult.cs
- XmlReaderDelegator.cs
- CollectionChangedEventManager.cs
- CommonObjectSecurity.cs
- SizeAnimationClockResource.cs
- TriggerBase.cs
- ServiceModelExtensionElement.cs
- ParserHooks.cs
- KeyedCollection.cs
- FontStretchConverter.cs
- DataViewManager.cs
- Resources.Designer.cs
- PrintDialogDesigner.cs
- SingleSelectRootGridEntry.cs
- QueueAccessMode.cs
- HScrollProperties.cs
- TreeNodeCollection.cs