Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Common / AuthoringOM / Serializer / SimpleTypesSurrogate.cs / 1305376 / SimpleTypesSurrogate.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 SimpleTypesSurrogate //This class is currently used only for Guids. The size diff is 93 bytes per guid over binary formatter //Will add support for other types as well, eventually. internal sealed class SimpleTypesSurrogate : ISerializationSurrogate { enum TypeID : byte { Guid = 1, Null, } void ISerializationSurrogate.GetObjectData(object obj, SerializationInfo info, StreamingContext context) { if (obj.GetType() == typeof(Guid)) { Guid guid = (Guid)obj; info.AddValue("typeID", TypeID.Guid); info.AddValue("bits", guid.ToByteArray()); } } object ISerializationSurrogate.SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) { TypeID typeID = (TypeID)info.GetValue("typeID", typeof(TypeID)); if (typeID == TypeID.Guid) return new Guid(info.GetValue("bits", typeof(byte[])) as byte[]); return null; } } #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 SimpleTypesSurrogate //This class is currently used only for Guids. The size diff is 93 bytes per guid over binary formatter //Will add support for other types as well, eventually. internal sealed class SimpleTypesSurrogate : ISerializationSurrogate { enum TypeID : byte { Guid = 1, Null, } void ISerializationSurrogate.GetObjectData(object obj, SerializationInfo info, StreamingContext context) { if (obj.GetType() == typeof(Guid)) { Guid guid = (Guid)obj; info.AddValue("typeID", TypeID.Guid); info.AddValue("bits", guid.ToByteArray()); } } object ISerializationSurrogate.SetObjectData(object obj, SerializationInfo info, StreamingContext context, ISurrogateSelector selector) { TypeID typeID = (TypeID)info.GetValue("typeID", typeof(TypeID)); if (typeID == TypeID.Guid) return new Guid(info.GetValue("bits", typeof(byte[])) as byte[]); return null; } } #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
- SimpleNameService.cs
- ProcessModuleCollection.cs
- MessageEnumerator.cs
- ConfigXmlAttribute.cs
- ExpressionHelper.cs
- ExtendedPropertyDescriptor.cs
- X509CertificateEndpointIdentity.cs
- InvalidComObjectException.cs
- ImpersonateTokenRef.cs
- DataListAutoFormat.cs
- AdornerDecorator.cs
- TrackingDataItem.cs
- FtpWebRequest.cs
- LayoutTableCell.cs
- FormViewUpdateEventArgs.cs
- Icon.cs
- ClientRuntimeConfig.cs
- LinqToSqlWrapper.cs
- VisualCollection.cs
- Ref.cs
- XmlDsigSep2000.cs
- TimelineGroup.cs
- CompilationUtil.cs
- TopClause.cs
- ScrollItemPatternIdentifiers.cs
- ControlAdapter.cs
- PrimitiveSchema.cs
- EnterpriseServicesHelper.cs
- ColorTransform.cs
- UnsafeNativeMethods.cs
- CacheRequest.cs
- OleDbEnumerator.cs
- SiteMapNodeCollection.cs
- ObjectDataSourceView.cs
- UpdateRecord.cs
- CopyOnWriteList.cs
- MatchingStyle.cs
- RtfToXamlLexer.cs
- ValidateNames.cs
- StringValueSerializer.cs
- SkinIDTypeConverter.cs
- XmlDocument.cs
- TextElementEditingBehaviorAttribute.cs
- ClientSettings.cs
- DropSource.cs
- CodeIdentifier.cs
- TdsParserHelperClasses.cs
- PropertyIDSet.cs
- DBConcurrencyException.cs
- XsltCompileContext.cs
- TextElementAutomationPeer.cs
- GB18030Encoding.cs
- SqlFormatter.cs
- EmptyStringExpandableObjectConverter.cs
- MethodImplAttribute.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- QilValidationVisitor.cs
- PathFigure.cs
- ModelItemCollectionImpl.cs
- OpCellTreeNode.cs
- SplineKeyFrames.cs
- AutomationPatternInfo.cs
- ContextMenu.cs
- BuildProviderAppliesToAttribute.cs
- ComboBoxAutomationPeer.cs
- Win32SafeHandles.cs
- Tablet.cs
- OdbcConnection.cs
- LocationSectionRecord.cs
- HierarchicalDataBoundControlAdapter.cs
- Comparer.cs
- SecurityPermission.cs
- Point3D.cs
- TypeLibraryHelper.cs
- ExternalException.cs
- _IPv4Address.cs
- FunctionQuery.cs
- AssertFilter.cs
- DataIdProcessor.cs
- ClientRuntimeConfig.cs
- Fx.cs
- ConfigurationStrings.cs
- FtpRequestCacheValidator.cs
- SqlNotificationRequest.cs
- ResourceDictionary.cs
- DefaultExpression.cs
- PasswordBoxAutomationPeer.cs
- SymbolPair.cs
- OptimisticConcurrencyException.cs
- NegotiateStream.cs
- TextEditorLists.cs
- XmlTextWriter.cs
- SqlNodeAnnotation.cs
- BezierSegment.cs
- __Filters.cs
- ResolveNameEventArgs.cs
- RefreshEventArgs.cs
- StylusLogic.cs
- HttpHandlerAction.cs
- Stylesheet.cs