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
- OperationCanceledException.cs
- Clause.cs
- BindStream.cs
- objectresult_tresulttype.cs
- CompiledAction.cs
- WebPartDisplayModeCancelEventArgs.cs
- HttpResponse.cs
- ProviderConnectionPointCollection.cs
- InitializingNewItemEventArgs.cs
- PageThemeBuildProvider.cs
- DrawingContext.cs
- QuaternionAnimationUsingKeyFrames.cs
- EventManager.cs
- ErrorProvider.cs
- NonBatchDirectoryCompiler.cs
- UiaCoreTypesApi.cs
- LinqMaximalSubtreeNominator.cs
- OracleConnectionStringBuilder.cs
- EntityDataSourceContainerNameItem.cs
- FrameworkTextComposition.cs
- RequestStatusBarUpdateEventArgs.cs
- AttachedPropertyInfo.cs
- DispatcherHookEventArgs.cs
- CatalogPart.cs
- RuntimeConfigLKG.cs
- UpdateProgress.cs
- SocketPermission.cs
- CodeMethodInvokeExpression.cs
- Odbc32.cs
- ZipIOLocalFileHeader.cs
- TextFormatterHost.cs
- ObjectDataSourceEventArgs.cs
- UserControlFileEditor.cs
- ServiceRoute.cs
- DataServiceQueryProvider.cs
- StringWriter.cs
- CustomTypeDescriptor.cs
- DataGridViewRowsAddedEventArgs.cs
- DataGridViewCellMouseEventArgs.cs
- ErrorHandler.cs
- HTMLTextWriter.cs
- ErrorWrapper.cs
- ExpressionList.cs
- SafeRegistryHandle.cs
- SchemaSetCompiler.cs
- AttachedAnnotation.cs
- ContentFileHelper.cs
- EntryWrittenEventArgs.cs
- ObjectListFieldCollection.cs
- HatchBrush.cs
- DataGridRowDetailsEventArgs.cs
- SetterTriggerConditionValueConverter.cs
- StringWriter.cs
- BinaryMethodMessage.cs
- ArraySortHelper.cs
- WebPartConnectionCollection.cs
- DtdParser.cs
- SymbolTable.cs
- WebBrowserContainer.cs
- AssemblyHash.cs
- AggregationMinMaxHelpers.cs
- TemplatedEditableDesignerRegion.cs
- WebPart.cs
- AsymmetricSignatureDeformatter.cs
- milexports.cs
- TreeNodeBindingCollection.cs
- ParamArrayAttribute.cs
- ValueChangedEventManager.cs
- ReachDocumentSequenceSerializerAsync.cs
- TypeConverterHelper.cs
- RequestValidator.cs
- NameGenerator.cs
- DataSourceHelper.cs
- RelatedPropertyManager.cs
- DetailsView.cs
- SqlParameterizer.cs
- SafeEventLogWriteHandle.cs
- _ConnectOverlappedAsyncResult.cs
- MsmqMessage.cs
- StrongNameSignatureInformation.cs
- DataErrorValidationRule.cs
- EventListener.cs
- ResourceType.cs
- PtsHelper.cs
- DataSourceControlBuilder.cs
- SqlWebEventProvider.cs
- Instrumentation.cs
- ServiceSecurityAuditBehavior.cs
- Subtree.cs
- IArgumentProvider.cs
- WindowsRichEdit.cs
- LabelExpression.cs
- ReadWriteSpinLock.cs
- ReadOnlyState.cs
- IPEndPoint.cs
- MapPathBasedVirtualPathProvider.cs
- ToolStripHighContrastRenderer.cs
- ToolStripItemGlyph.cs
- XmlObjectSerializerReadContext.cs
- WindowsScroll.cs