Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ILGen.cs
- _SslStream.cs
- CheckBoxStandardAdapter.cs
- AdjustableArrowCap.cs
- QilNode.cs
- TextServicesCompartmentContext.cs
- ReflectEventDescriptor.cs
- WindowCollection.cs
- RadioButton.cs
- EnumValAlphaComparer.cs
- LayoutTableCell.cs
- RegexStringValidatorAttribute.cs
- RootProjectionNode.cs
- KeyValueInternalCollection.cs
- SinglePageViewer.cs
- BindingObserver.cs
- SHA256Managed.cs
- _UriSyntax.cs
- ClockGroup.cs
- PixelShader.cs
- PeerSecurityHelpers.cs
- MailAddressCollection.cs
- LicFileLicenseProvider.cs
- ExtenderProviderService.cs
- Tokenizer.cs
- AutomationTextAttribute.cs
- DeclaredTypeValidatorAttribute.cs
- XmlAnyAttributeAttribute.cs
- LoggedException.cs
- KnownTypeHelper.cs
- ValidatorCompatibilityHelper.cs
- DataBindingHandlerAttribute.cs
- DataControlField.cs
- storagemappingitemcollection.viewdictionary.cs
- ItemTypeToolStripMenuItem.cs
- TextServicesCompartmentEventSink.cs
- X509ChainPolicy.cs
- WebPartEventArgs.cs
- StylusOverProperty.cs
- KoreanCalendar.cs
- coordinatorscratchpad.cs
- OneOfTypeConst.cs
- DelegatingHeader.cs
- PlaceHolder.cs
- Int32RectConverter.cs
- UInt16.cs
- XsltLibrary.cs
- EFDataModelProvider.cs
- PrintControllerWithStatusDialog.cs
- COM2PictureConverter.cs
- ListBoxChrome.cs
- HiddenFieldPageStatePersister.cs
- NamespaceTable.cs
- BadImageFormatException.cs
- HttpWrapper.cs
- XmlStreamStore.cs
- VisualCollection.cs
- ResourceCategoryAttribute.cs
- VirtualizingStackPanel.cs
- MetadataPropertyAttribute.cs
- TabControlEvent.cs
- CodePropertyReferenceExpression.cs
- Types.cs
- ResXResourceWriter.cs
- FlowDocumentView.cs
- EntityConnection.cs
- ReadOnlyDataSource.cs
- LogManagementAsyncResult.cs
- AnimatedTypeHelpers.cs
- SiteMembershipCondition.cs
- ToolStripItemCollection.cs
- SEHException.cs
- RegexMatch.cs
- LassoHelper.cs
- SecurityContext.cs
- StorageComplexTypeMapping.cs
- VoiceSynthesis.cs
- TypeDescriptorContext.cs
- ClientOptions.cs
- GridViewCommandEventArgs.cs
- CompilerResults.cs
- DecimalAnimationUsingKeyFrames.cs
- TableColumn.cs
- ReachFixedPageSerializer.cs
- TraceContextEventArgs.cs
- ThreadWorkerController.cs
- _emptywebproxy.cs
- ToolStripItemImageRenderEventArgs.cs
- SynchronizationScope.cs
- SHA384Managed.cs
- WebConfigurationHost.cs
- MatrixTransform3D.cs
- Helper.cs
- DocumentViewerBase.cs
- AppDomainManager.cs
- Misc.cs
- EventPrivateKey.cs
- xamlnodes.cs
- ContainerVisual.cs
- CustomAttributeFormatException.cs