Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Runtime / Serialization / SerializationInfoEnumerator.cs / 1 / SerializationInfoEnumerator.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
/*============================================================
**
** Class: SerializationInfoEnumerator
**
**
** Purpose: A formatter-friendly mechanism for walking all of
** the data in a SerializationInfo. Follows the IEnumerator
** mechanism from Collections.
**
**
============================================================*/
namespace System.Runtime.Serialization {
using System;
using System.Collections;
//
// The tuple returned by SerializationInfoEnumerator.Current.
//
[System.Runtime.InteropServices.ComVisible(true)]
public struct SerializationEntry {
private Type m_type;
private Object m_value;
private String m_name;
public Object Value {
get {
return m_value;
}
}
public String Name {
get {
return m_name;
}
}
public Type ObjectType {
get {
return m_type;
}
}
internal SerializationEntry(String entryName, Object entryValue, Type entryType) {
m_value = entryValue;
m_name = entryName;
m_type = entryType;
}
}
//
// A simple enumerator over the values stored in the SerializationInfo.
// This does not snapshot the values, it just keeps pointers to the
// member variables of the SerializationInfo that created it.
//
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class SerializationInfoEnumerator : IEnumerator {
String[] m_members;
Object[] m_data;
Type[] m_types;
int m_numItems;
int m_currItem;
bool m_current;
internal SerializationInfoEnumerator(String[] members, Object[] info, Type[] types, int numItems) {
BCLDebug.Assert(members!=null, "[SerializationInfoEnumerator.ctor]members!=null");
BCLDebug.Assert(info!=null, "[SerializationInfoEnumerator.ctor]info!=null");
BCLDebug.Assert(types!=null, "[SerializationInfoEnumerator.ctor]types!=null");
BCLDebug.Assert(numItems>=0, "[SerializationInfoEnumerator.ctor]numItems>=0");
BCLDebug.Assert(members.Length>=numItems, "[SerializationInfoEnumerator.ctor]members.Length>=numItems");
BCLDebug.Assert(info.Length>=numItems, "[SerializationInfoEnumerator.ctor]info.Length>=numItems");
BCLDebug.Assert(types.Length>=numItems, "[SerializationInfoEnumerator.ctor]types.Length>=numItems");
m_members = members;
m_data = info;
m_types = types;
//The MoveNext semantic is much easier if we enforce that [0..m_numItems] are valid entries
//in the enumerator, hence we subtract 1.
m_numItems = numItems-1;
m_currItem = -1;
m_current = false;
}
public bool MoveNext() {
if (m_currItem
Object IEnumerator.Current { //Actually returns a SerializationEntry
get {
if (m_current==false) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen"));
}
return (Object)(new SerializationEntry(m_members[m_currItem], m_data[m_currItem], m_types[m_currItem]));
}
}
public SerializationEntry Current { //Actually returns a SerializationEntry
get {
if (m_current==false) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen"));
}
return (new SerializationEntry(m_members[m_currItem], m_data[m_currItem], m_types[m_currItem]));
}
}
public void Reset() {
m_currItem = -1;
m_current = false;
}
public String Name {
get {
if (m_current==false) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen"));
}
return m_members[m_currItem];
}
}
public Object Value {
get {
if (m_current==false) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen"));
}
return m_data[m_currItem];
}
}
public Type ObjectType {
get {
if (m_current==false) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen"));
}
return m_types[m_currItem];
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
/*============================================================
**
** Class: SerializationInfoEnumerator
**
**
** Purpose: A formatter-friendly mechanism for walking all of
** the data in a SerializationInfo. Follows the IEnumerator
** mechanism from Collections.
**
**
============================================================*/
namespace System.Runtime.Serialization {
using System;
using System.Collections;
//
// The tuple returned by SerializationInfoEnumerator.Current.
//
[System.Runtime.InteropServices.ComVisible(true)]
public struct SerializationEntry {
private Type m_type;
private Object m_value;
private String m_name;
public Object Value {
get {
return m_value;
}
}
public String Name {
get {
return m_name;
}
}
public Type ObjectType {
get {
return m_type;
}
}
internal SerializationEntry(String entryName, Object entryValue, Type entryType) {
m_value = entryValue;
m_name = entryName;
m_type = entryType;
}
}
//
// A simple enumerator over the values stored in the SerializationInfo.
// This does not snapshot the values, it just keeps pointers to the
// member variables of the SerializationInfo that created it.
//
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class SerializationInfoEnumerator : IEnumerator {
String[] m_members;
Object[] m_data;
Type[] m_types;
int m_numItems;
int m_currItem;
bool m_current;
internal SerializationInfoEnumerator(String[] members, Object[] info, Type[] types, int numItems) {
BCLDebug.Assert(members!=null, "[SerializationInfoEnumerator.ctor]members!=null");
BCLDebug.Assert(info!=null, "[SerializationInfoEnumerator.ctor]info!=null");
BCLDebug.Assert(types!=null, "[SerializationInfoEnumerator.ctor]types!=null");
BCLDebug.Assert(numItems>=0, "[SerializationInfoEnumerator.ctor]numItems>=0");
BCLDebug.Assert(members.Length>=numItems, "[SerializationInfoEnumerator.ctor]members.Length>=numItems");
BCLDebug.Assert(info.Length>=numItems, "[SerializationInfoEnumerator.ctor]info.Length>=numItems");
BCLDebug.Assert(types.Length>=numItems, "[SerializationInfoEnumerator.ctor]types.Length>=numItems");
m_members = members;
m_data = info;
m_types = types;
//The MoveNext semantic is much easier if we enforce that [0..m_numItems] are valid entries
//in the enumerator, hence we subtract 1.
m_numItems = numItems-1;
m_currItem = -1;
m_current = false;
}
public bool MoveNext() {
if (m_currItem
Object IEnumerator.Current { //Actually returns a SerializationEntry
get {
if (m_current==false) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen"));
}
return (Object)(new SerializationEntry(m_members[m_currItem], m_data[m_currItem], m_types[m_currItem]));
}
}
public SerializationEntry Current { //Actually returns a SerializationEntry
get {
if (m_current==false) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen"));
}
return (new SerializationEntry(m_members[m_currItem], m_data[m_currItem], m_types[m_currItem]));
}
}
public void Reset() {
m_currItem = -1;
m_current = false;
}
public String Name {
get {
if (m_current==false) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen"));
}
return m_members[m_currItem];
}
}
public Object Value {
get {
if (m_current==false) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen"));
}
return m_data[m_currItem];
}
}
public Type ObjectType {
get {
if (m_current==false) {
throw new InvalidOperationException(Environment.GetResourceString("InvalidOperation_EnumOpCantHappen"));
}
return m_types[m_currItem];
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ScriptManagerProxy.cs
- IDQuery.cs
- RequiredFieldValidator.cs
- FontSourceCollection.cs
- Properties.cs
- TransformerConfigurationWizardBase.cs
- InvalidOperationException.cs
- GridViewRowEventArgs.cs
- SchemaImporterExtensionsSection.cs
- AutomationElementIdentifiers.cs
- DefaultProxySection.cs
- tibetanshape.cs
- MappingItemCollection.cs
- RNGCryptoServiceProvider.cs
- SecurityIdentifierElement.cs
- PathFigure.cs
- DataIdProcessor.cs
- XmlUtf8RawTextWriter.cs
- BookmarkCallbackWrapper.cs
- WebServiceData.cs
- ConfigurationStrings.cs
- SqlAliaser.cs
- DefinitionBase.cs
- EditorPart.cs
- NumberSubstitution.cs
- CompilerResults.cs
- HotCommands.cs
- BitStack.cs
- HasCopySemanticsAttribute.cs
- LinqDataSourceDisposeEventArgs.cs
- Configuration.cs
- SqlVersion.cs
- MissingManifestResourceException.cs
- FlowNode.cs
- ConnectionPoint.cs
- ClientProxyGenerator.cs
- RequiredFieldValidator.cs
- COM2Enum.cs
- MetabaseReader.cs
- PolicyManager.cs
- DataTemplateSelector.cs
- ChannelToken.cs
- MailHeaderInfo.cs
- SizeIndependentAnimationStorage.cs
- DescendentsWalker.cs
- LostFocusEventManager.cs
- IDictionary.cs
- OutputCacheProfile.cs
- TextEditorSelection.cs
- SuppressMergeCheckAttribute.cs
- ChineseLunisolarCalendar.cs
- XmlWriterSettings.cs
- JsonFormatWriterGenerator.cs
- Pool.cs
- TextWriter.cs
- ToolStripHighContrastRenderer.cs
- SequenceQuery.cs
- DbDeleteCommandTree.cs
- Soap12FormatExtensions.cs
- documentation.cs
- MergeFilterQuery.cs
- EventEntry.cs
- NumericExpr.cs
- UpnEndpointIdentityExtension.cs
- DiffuseMaterial.cs
- OleDbReferenceCollection.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- PropertyValueChangedEvent.cs
- precedingquery.cs
- GridViewEditEventArgs.cs
- RowToParametersTransformer.cs
- InkCanvasSelection.cs
- RowToParametersTransformer.cs
- CapabilitiesRule.cs
- StringTraceRecord.cs
- HttpConfigurationSystem.cs
- ComponentManagerBroker.cs
- FixedTextPointer.cs
- User.cs
- FlowLayout.cs
- CollectionChangedEventManager.cs
- HotSpotCollection.cs
- Point3DCollection.cs
- Type.cs
- Select.cs
- DesignTimeSiteMapProvider.cs
- DmlSqlGenerator.cs
- DateTimeParse.cs
- XmlCDATASection.cs
- StandardRuntimeEnumValidatorAttribute.cs
- UpdateCommand.cs
- UnsafeNativeMethodsMilCoreApi.cs
- XmlCharCheckingReader.cs
- XPathNodeList.cs
- EventLogLink.cs
- Convert.cs
- RIPEMD160Managed.cs
- ZipQueryOperator.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- DesignerForm.cs