Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Runtime / Serialization / Formatters / Binary / BinaryObjectInfo.cs / 1 / BinaryObjectInfo.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: SerObjectInfo ** ** ** Purpose: Holds information about an objects Members ** ** ===========================================================*/ namespace System.Runtime.Serialization.Formatters.Binary { using System.Runtime.Remoting; using System.Runtime.Serialization; using System; using System.Collections; using System.Reflection; using System.Diagnostics; using System.Globalization; // This class contains information about an object. It is used so that // the rest of the Formatter routines can use a common interface for // a normal object, an ISerializable object, and a surrogate object // // The methods in this class are for the internal use of the Formatters. // There use will be restricted when signing is supported for assemblies internal sealed class WriteObjectInfo { internal int objectInfoId; internal Object obj; internal Type objectType; internal bool isSi = false; internal bool isNamed = false; internal bool isTyped = false; internal bool isArray = false; internal SerializationInfo si = null; internal SerObjectInfoCache cache = null; internal Object[] memberData = null; internal ISerializationSurrogate serializationSurrogate = null; internal StreamingContext context; internal SerObjectInfoInit serObjectInfoInit = null; // Writing and Parsing information internal long objectId; internal long assemId; internal WriteObjectInfo() { } internal void ObjectEnd() { SerTrace.Log( this, objectInfoId," objectType ",objectType," ObjectEnd"); PutObjectInfo(serObjectInfoInit, this); } private void InternalInit() { SerTrace.Log( this, objectInfoId," objectType ",objectType," InternalInit"); obj = null; objectType = null; isSi = false; isNamed = false; isTyped = false; isArray = false; si = null; cache = null; memberData = null; // Writing and Parsing information objectId = 0; assemId = 0; } internal static WriteObjectInfo Serialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter) { WriteObjectInfo soi = GetObjectInfo(serObjectInfoInit); soi.InitSerialize(obj, surrogateSelector, context, serObjectInfoInit, converter, objectWriter); return soi; } // Write constructor internal void InitSerialize(Object obj, ISurrogateSelector surrogateSelector, StreamingContext context, SerObjectInfoInit serObjectInfoInit, IFormatterConverter converter, ObjectWriter objectWriter) { SerTrace.Log( this, objectInfoId," Constructor 1 ",obj); this.context = context; this.obj = obj; this.serObjectInfoInit = serObjectInfoInit; ISurrogateSelector surrogateSelectorTemp; if (RemotingServices.IsTransparentProxy(obj)) objectType = Converter.typeofMarshalByRefObject; else objectType = obj.GetType(); if (objectType.IsArray) { isArray = true; InitNoMembers(); return; } SerTrace.Log( this, objectInfoId," Constructor 1 trace 2"); objectWriter.ObjectManager.RegisterObject(obj); if (surrogateSelector != null && (serializationSurrogate = surrogateSelector.GetSurrogate(objectType, context, out surrogateSelectorTemp)) != null) { SerTrace.Log( this, objectInfoId," Constructor 1 trace 3"); si = new SerializationInfo(objectType, converter); if (!objectType.IsPrimitive) serializationSurrogate.GetObjectData(obj, si, context); InitSiWrite(); } else if (obj is ISerializable) { if (!objectType.IsSerializable) { throw new SerializationException(String.Format(CultureInfo.CurrentCulture, Environment.GetResourceString("Serialization_NonSerType"), objectType.FullName, objectType.Assembly.FullName)); } si = new SerializationInfo(objectType, converter); ((ISerializable)obj).GetObjectData(si, context); SerTrace.Log( this, objectInfoId," Constructor 1 trace 4 ISerializable "+objectType); InitSiWrite(); } else { SerTrace.Log(this, objectInfoId," Constructor 1 trace 5"); InitMemberInfo(); } } [Conditional("SER_LOGGING")] private void DumpMemberInfo() { for (int i=0; i0 && cache.memberNames[lastPosition].Equals(name)) { return lastPosition; } else if ((++lastPosition < cache.memberNames.Length) && (cache.memberNames[lastPosition].Equals(name))) { return lastPosition; } else { // Search for name SerTrace.Log( this, objectInfoId," Position miss search for name "+name); for (int i=0; i 0 && cache.memberNames[lastPosition].Equals(name)) { return lastPosition; } else if ((++lastPosition < cache.memberNames.Length) && (cache.memberNames[lastPosition].Equals(name))) { return lastPosition; } else { // Search for name SerTrace.Log( this, objectInfoId," Position miss search for name "+name); for (int i=0; i
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebBrowserDocumentCompletedEventHandler.cs
- StorageComplexPropertyMapping.cs
- NetStream.cs
- DocumentViewerAutomationPeer.cs
- ActivityCodeDomReferenceService.cs
- SpeakProgressEventArgs.cs
- GetResponse.cs
- DataSourceXmlSerializer.cs
- HtmlTableCell.cs
- FontFamilyConverter.cs
- UnsafeNativeMethods.cs
- DefaultMergeHelper.cs
- DecoderExceptionFallback.cs
- TablePattern.cs
- FilterEventArgs.cs
- OperationCanceledException.cs
- FrameworkContextData.cs
- UrlPropertyAttribute.cs
- EntitySqlQueryCacheKey.cs
- XmlSchemaGroup.cs
- SiteMapDataSourceView.cs
- MultilineStringConverter.cs
- KeySpline.cs
- MenuItem.cs
- AffineTransform3D.cs
- HierarchicalDataBoundControl.cs
- SR.cs
- DPTypeDescriptorContext.cs
- HttpCapabilitiesSectionHandler.cs
- ThousandthOfEmRealDoubles.cs
- DodSequenceMerge.cs
- WindowsGraphics2.cs
- PageSetupDialog.cs
- MsmqIntegrationSecurityElement.cs
- ContextBase.cs
- Model3DCollection.cs
- __Filters.cs
- ValidationErrorCollection.cs
- BigInt.cs
- DataPagerField.cs
- UIElementPropertyUndoUnit.cs
- DialogWindow.cs
- ProfileGroupSettingsCollection.cs
- WebBrowserProgressChangedEventHandler.cs
- ControlCollection.cs
- ConditionedDesigner.cs
- FileStream.cs
- Item.cs
- SHA256Managed.cs
- MetadataFile.cs
- ArglessEventHandlerProxy.cs
- Int32CollectionConverter.cs
- PageBreakRecord.cs
- JobDuplex.cs
- _Events.cs
- DurableDispatcherAddressingFault.cs
- QuestionEventArgs.cs
- RelationshipConstraintValidator.cs
- XmlSchemaAttributeGroupRef.cs
- BinaryEditor.cs
- MultilineStringConverter.cs
- ProtocolsConfigurationHandler.cs
- KeyGesture.cs
- BindingManagerDataErrorEventArgs.cs
- MailSettingsSection.cs
- KeyedCollection.cs
- RenderData.cs
- TextRangeSerialization.cs
- WorkflowEnvironment.cs
- CalendarModeChangedEventArgs.cs
- DocumentViewerConstants.cs
- NamedPipeDuplicateContext.cs
- DropShadowBitmapEffect.cs
- ReaderWriterLockWrapper.cs
- HMACSHA1.cs
- DataBoundControlHelper.cs
- sqlinternaltransaction.cs
- KnownBoxes.cs
- StringResourceManager.cs
- TextEditorTables.cs
- odbcmetadatafactory.cs
- SqlDataSourceCache.cs
- ButtonFlatAdapter.cs
- DataGridViewCellStyle.cs
- UserControlBuildProvider.cs
- RangeExpression.cs
- Token.cs
- ResourceAssociationTypeEnd.cs
- DbSourceCommand.cs
- SoapCommonClasses.cs
- KnownTypesHelper.cs
- VisualBrush.cs
- DbBuffer.cs
- SafeBitVector32.cs
- DataGridCellClipboardEventArgs.cs
- DataGridViewHitTestInfo.cs
- PageStatePersister.cs
- UseManagedPresentationBindingElementImporter.cs
- DataGridViewLayoutData.cs
- XPathNode.cs