Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
![Network programming in C#, Network Programming in VB.NET, Network Programming in .NET](/images/book.jpg)
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- InputReportEventArgs.cs
- InputBinding.cs
- FixedSOMPageElement.cs
- TransactionContextValidator.cs
- PriorityQueue.cs
- XmlMemberMapping.cs
- EventLogPermissionEntryCollection.cs
- figurelengthconverter.cs
- HexParser.cs
- TreeView.cs
- AsymmetricKeyExchangeDeformatter.cs
- PasswordBoxAutomationPeer.cs
- DateTimeUtil.cs
- ToolboxCategory.cs
- TextParaClient.cs
- XmlSchemaInferenceException.cs
- CurrentChangingEventManager.cs
- ADConnectionHelper.cs
- DataRelationCollection.cs
- ImageIndexEditor.cs
- SafeEventLogReadHandle.cs
- SqlConnectionString.cs
- MobileListItem.cs
- DbSetClause.cs
- HScrollProperties.cs
- DynamicQueryableWrapper.cs
- DefaultPrintController.cs
- Maps.cs
- SourceSwitch.cs
- PermissionSet.cs
- FirstMatchCodeGroup.cs
- IndentedWriter.cs
- ParameterExpression.cs
- BamlResourceContent.cs
- StylusDownEventArgs.cs
- Mapping.cs
- FormViewCommandEventArgs.cs
- StylusCollection.cs
- SqlDataSourceConfigureSortForm.cs
- DocumentViewerBase.cs
- TimeSpanSecondsConverter.cs
- ContractCodeDomInfo.cs
- DocumentSequenceHighlightLayer.cs
- WebPartDisplayModeCollection.cs
- SchemaNotation.cs
- Comparer.cs
- LongPath.cs
- ReferentialConstraint.cs
- ListDictionary.cs
- rsa.cs
- RuntimeConfig.cs
- StdValidatorsAndConverters.cs
- ObjectViewFactory.cs
- ShapingEngine.cs
- Renderer.cs
- StrokeCollection2.cs
- RewritingPass.cs
- ThemeableAttribute.cs
- DataGridRelationshipRow.cs
- SqlDataSourceFilteringEventArgs.cs
- PolicyChain.cs
- MetafileHeader.cs
- XmlNodeList.cs
- FileLevelControlBuilderAttribute.cs
- WindowHideOrCloseTracker.cs
- QuadraticBezierSegment.cs
- DrawingContextWalker.cs
- IODescriptionAttribute.cs
- GridViewCommandEventArgs.cs
- IISMapPath.cs
- HostingPreferredMapPath.cs
- ObjectMemberMapping.cs
- UrlPath.cs
- ElapsedEventArgs.cs
- StrokeIntersection.cs
- DiscardableAttribute.cs
- Inflater.cs
- FontDifferentiator.cs
- SmiRecordBuffer.cs
- XmlHelper.cs
- DBBindings.cs
- DynamicObject.cs
- COM2FontConverter.cs
- ChannelManagerService.cs
- DbConnectionOptions.cs
- SmiRecordBuffer.cs
- VariableExpressionConverter.cs
- QilBinary.cs
- ConnectionsZone.cs
- ISO2022Encoding.cs
- EventLogger.cs
- DataGridViewRow.cs
- CodeIdentifiers.cs
- CodeAttributeArgumentCollection.cs
- ConfigViewGenerator.cs
- SelectorAutomationPeer.cs
- DbProviderFactories.cs
- ApplyHostConfigurationBehavior.cs
- EntryIndex.cs
- DLinqColumnProvider.cs