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
- AbandonedMutexException.cs
- DrawingContextWalker.cs
- GridViewUpdatedEventArgs.cs
- AuthenticationConfig.cs
- ModelFunction.cs
- keycontainerpermission.cs
- Cursor.cs
- TextEditorSelection.cs
- XmlWrappingWriter.cs
- Point3DKeyFrameCollection.cs
- ProfileSection.cs
- PathBox.cs
- Cast.cs
- NullRuntimeConfig.cs
- MediaTimeline.cs
- SelectionUIService.cs
- SmiConnection.cs
- DataBoundLiteralControl.cs
- CodeAttributeArgument.cs
- SqlClientWrapperSmiStreamChars.cs
- WinFormsComponentEditor.cs
- HandlerMappingMemo.cs
- DataBinder.cs
- ProcessProtocolHandler.cs
- _ConnectionGroup.cs
- VisemeEventArgs.cs
- HealthMonitoringSectionHelper.cs
- HyperLink.cs
- AppSecurityManager.cs
- EditorAttribute.cs
- NativeObjectSecurity.cs
- ClientSideQueueItem.cs
- ScrollBar.cs
- ErrorFormatterPage.cs
- RuleSet.cs
- Rfc2898DeriveBytes.cs
- WorkflowTransactionOptions.cs
- Ray3DHitTestResult.cs
- SafeEventLogWriteHandle.cs
- Line.cs
- Mutex.cs
- StylusOverProperty.cs
- ModelUIElement3D.cs
- FutureFactory.cs
- Regex.cs
- PipeStream.cs
- RenderTargetBitmap.cs
- CodeExpressionStatement.cs
- MdImport.cs
- _IPv6Address.cs
- AsyncOperationManager.cs
- PanelStyle.cs
- OdbcConnectionHandle.cs
- DiscardableAttribute.cs
- UpdateCompiler.cs
- EmbeddedMailObjectsCollection.cs
- RelationshipSet.cs
- PageCatalogPartDesigner.cs
- Drawing.cs
- ApplicationServiceManager.cs
- SQLDateTimeStorage.cs
- EventLogReader.cs
- SkinBuilder.cs
- DesignerDataSchemaClass.cs
- unitconverter.cs
- DependencyPropertyAttribute.cs
- TargetInvocationException.cs
- CommandPlan.cs
- RegexWorker.cs
- CurrencyWrapper.cs
- TextSearch.cs
- BaseValidatorDesigner.cs
- CatalogZoneAutoFormat.cs
- RectKeyFrameCollection.cs
- UITypeEditor.cs
- TypeInitializationException.cs
- designeractionlistschangedeventargs.cs
- OleDbException.cs
- PointAnimationUsingKeyFrames.cs
- SoapProcessingBehavior.cs
- PropertyBuilder.cs
- CompilerState.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- DataGridLinkButton.cs
- ToolTipService.cs
- Emitter.cs
- DataTableExtensions.cs
- EventSetterHandlerConverter.cs
- XmlDocumentFragment.cs
- ApplicationSettingsBase.cs
- ProviderUtil.cs
- EventMappingSettings.cs
- XmlSchemaAny.cs
- ChineseLunisolarCalendar.cs
- EndPoint.cs
- FlowDocument.cs
- FontFaceLayoutInfo.cs
- ProcessRequestArgs.cs
- XsltSettings.cs
- CodeDomLocalizationProvider.cs