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
- TableSectionStyle.cs
- ToolboxItem.cs
- ProjectionQueryOptionExpression.cs
- Confirm.cs
- URLMembershipCondition.cs
- ErrorLog.cs
- ProxyElement.cs
- Resources.Designer.cs
- DataGridPreparingCellForEditEventArgs.cs
- SimpleMailWebEventProvider.cs
- PackageProperties.cs
- WebSysDisplayNameAttribute.cs
- UInt16Converter.cs
- ItemTypeToolStripMenuItem.cs
- BitmapEffectGeneralTransform.cs
- TreeBuilder.cs
- ConnectionManagementSection.cs
- Assembly.cs
- SecurityChannelFaultConverter.cs
- ListSurrogate.cs
- OraclePermissionAttribute.cs
- brushes.cs
- EventBuilder.cs
- TreeViewImageIndexConverter.cs
- CollectionBuilder.cs
- Function.cs
- LinqDataSourceContextEventArgs.cs
- QueryTask.cs
- TreeWalker.cs
- WebPartZoneDesigner.cs
- QualifiedCellIdBoolean.cs
- LogRecordSequence.cs
- TraceContext.cs
- SqlPersonalizationProvider.cs
- SpinWait.cs
- Tokenizer.cs
- GridViewRowCollection.cs
- LocalizationComments.cs
- LabelDesigner.cs
- InfoCardRSAOAEPKeyExchangeDeformatter.cs
- HostProtectionException.cs
- DesignTimeVisibleAttribute.cs
- CustomSignedXml.cs
- Keywords.cs
- LoginDesignerUtil.cs
- SessionStateUtil.cs
- BatchStream.cs
- CompressStream.cs
- DBSchemaRow.cs
- FileUtil.cs
- OleDbConnection.cs
- LiteralSubsegment.cs
- MissingFieldException.cs
- TransportOutputChannel.cs
- MethodInfo.cs
- UserInitiatedNavigationPermission.cs
- HttpModuleCollection.cs
- DataGridViewToolTip.cs
- FontSizeConverter.cs
- ToolStripComboBox.cs
- DbConnectionStringCommon.cs
- CurrencyWrapper.cs
- DrawingVisualDrawingContext.cs
- ConfigurationElement.cs
- HttpWebResponse.cs
- SystemUdpStatistics.cs
- GeometryConverter.cs
- DesignSurfaceCollection.cs
- CompositionTarget.cs
- WmlLinkAdapter.cs
- DataServiceEntityAttribute.cs
- CharAnimationUsingKeyFrames.cs
- RowTypeElement.cs
- ListenerConstants.cs
- TransformConverter.cs
- XamlFilter.cs
- PropertyMapper.cs
- IntegerValidator.cs
- VirtualizingStackPanel.cs
- EngineSiteSapi.cs
- DocumentPageTextView.cs
- WindowInteropHelper.cs
- PenLineJoinValidation.cs
- AssemblyFilter.cs
- SqlResolver.cs
- UnSafeCharBuffer.cs
- TransformGroup.cs
- SpecialFolderEnumConverter.cs
- CryptoKeySecurity.cs
- HashAlgorithm.cs
- SkinIDTypeConverter.cs
- RuntimeConfigLKG.cs
- XmlSchemaSimpleTypeRestriction.cs
- ParentQuery.cs
- MessageQueueEnumerator.cs
- NeutralResourcesLanguageAttribute.cs
- PageAsyncTask.cs
- NetCodeGroup.cs
- SignatureDescription.cs
- QuaternionValueSerializer.cs