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
- DefaultSettingsSection.cs
- PropertyRecord.cs
- DataSourceCacheDurationConverter.cs
- DataColumnSelectionConverter.cs
- ExceptionCollection.cs
- RawStylusInputCustomData.cs
- FormCollection.cs
- PrintEvent.cs
- UnsafeNativeMethods.cs
- OleDbTransaction.cs
- CompositeFontInfo.cs
- EdmConstants.cs
- XmlMapping.cs
- StringPropertyBuilder.cs
- UniqueIdentifierService.cs
- _NegoStream.cs
- TypeInfo.cs
- Odbc32.cs
- DynamicPropertyHolder.cs
- HMAC.cs
- ReachBasicContext.cs
- __FastResourceComparer.cs
- CounterNameConverter.cs
- TextTabProperties.cs
- WebBrowsableAttribute.cs
- WorkingDirectoryEditor.cs
- EnumerableRowCollection.cs
- ExtensionQuery.cs
- RepeaterItemCollection.cs
- XmlMapping.cs
- PrincipalPermission.cs
- QilVisitor.cs
- HtmlImage.cs
- PersonalizationProviderHelper.cs
- UrlPropertyAttribute.cs
- NamespaceEmitter.cs
- TagPrefixAttribute.cs
- StackBuilderSink.cs
- ConnectionOrientedTransportElement.cs
- DataGridView.cs
- PropertyInfo.cs
- followingsibling.cs
- WindowsFormsHostPropertyMap.cs
- ImageBrush.cs
- CodeCatchClauseCollection.cs
- UserUseLicenseDictionaryLoader.cs
- TextEditorTables.cs
- _ReceiveMessageOverlappedAsyncResult.cs
- RepeatButtonAutomationPeer.cs
- RetriableClipboard.cs
- TextChange.cs
- CollaborationHelperFunctions.cs
- FtpWebRequest.cs
- TabPanel.cs
- SoundPlayerAction.cs
- RSACryptoServiceProvider.cs
- ComplexObject.cs
- ModuleElement.cs
- CodeChecksumPragma.cs
- SmtpMail.cs
- SqlTriggerAttribute.cs
- CursorInteropHelper.cs
- DataRecordInfo.cs
- ChangeConflicts.cs
- _SingleItemRequestCache.cs
- SimpleLine.cs
- EncodingInfo.cs
- IntersectQueryOperator.cs
- DeferredElementTreeState.cs
- shaper.cs
- Codec.cs
- ColorMatrix.cs
- StringWriter.cs
- MdImport.cs
- HttpRequestMessageProperty.cs
- InvalidProgramException.cs
- HtmlAnchor.cs
- NumericExpr.cs
- SystemIPGlobalStatistics.cs
- TemplateXamlParser.cs
- OracleEncoding.cs
- SqlTriggerAttribute.cs
- NameScopePropertyAttribute.cs
- SQLInt32.cs
- TextSpanModifier.cs
- TabControlDesigner.cs
- TableParaClient.cs
- DesignerSerializationManager.cs
- RoleService.cs
- EntityTransaction.cs
- Token.cs
- SerializableAttribute.cs
- XmlSchemaSearchPattern.cs
- IssuedTokenClientBehaviorsElement.cs
- InvokeProviderWrapper.cs
- DataPagerFieldItem.cs
- HandlerFactoryWrapper.cs
- MemoryFailPoint.cs
- PaperSource.cs
- OleTxTransactionInfo.cs