Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / ndp / clr / src / BCL / System / Text / CodePageEncoding.cs / 1 / CodePageEncoding.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// WARNING:
//
// This is just an IObjectReference proxy for the Code Page Encodings.
namespace System.Text
{
using System;
using System.Runtime.Serialization;
using System.Security.Permissions;
/*=================================CodePageEncoding==================================
** This class is here only to deserialize the Code Page classes from Everett (V1.1) into
** Appropriate Whidbey (V2.0) objects. We also serialize the Whidbey classes
** using this proxy since we pretty much need one anyway and that solves Whidbey
** to Everett compatibility as well.
==============================================================================*/
[Serializable()]
internal sealed class CodePageEncoding : ISerializable, IObjectReference
{
// Temp stuff
[NonSerialized]
private int m_codePage;
[NonSerialized]
private bool m_isReadOnly;
[NonSerialized]
private bool m_deserializedFromEverett = false;
[NonSerialized]
private EncoderFallback encoderFallback = null;
[NonSerialized]
private DecoderFallback decoderFallback = null;
// Might need this when GetRealObjecting
[NonSerialized]
private Encoding realEncoding = null;
// Constructor called by serialization.
internal CodePageEncoding(SerializationInfo info, StreamingContext context)
{
// Any info?
if (info==null) throw new ArgumentNullException("info");
// All versions have a code page
this.m_codePage = (int)info.GetValue("m_codePage", typeof(int));
// See if we have a code page
try
{
//
// Try Whidbey V2.0 Fields
//
this.m_isReadOnly = (bool)info.GetValue("m_isReadOnly", typeof(bool));
this.encoderFallback = (EncoderFallback)info.GetValue("encoderFallback", typeof(EncoderFallback));
this.decoderFallback = (DecoderFallback)info.GetValue("decoderFallback", typeof(DecoderFallback));
}
catch (SerializationException)
{
//
// Didn't have Whidbey things, must be Everett
//
this.m_deserializedFromEverett = true;
// May as well be read only
this.m_isReadOnly = true;
}
}
// Just get it from GetEncoding
public Object GetRealObject(StreamingContext context)
{
// Get our encoding (Note: This has default fallbacks for readonly and everett cases)
this.realEncoding = Encoding.GetEncoding(this.m_codePage);
// If its read only then it uses default fallbacks, otherwise pick up the new ones
// Otherwise we want to leave the new one read only
if (!this.m_deserializedFromEverett && !this.m_isReadOnly)
{
this.realEncoding = (Encoding)this.realEncoding.Clone();
this.realEncoding.EncoderFallback = this.encoderFallback;
this.realEncoding.DecoderFallback = this.decoderFallback;
}
return this.realEncoding;
}
// ISerializable implementation
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
// We cannot ever call this.
BCLDebug.Assert(false, "Didn't expect to make it to CodePageEncoding ISerializable.GetObjectData");
throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException"));
}
// Same problem with the Decoder, this only happens with Everett Decoders
[Serializable]
internal sealed class Decoder : ISerializable, IObjectReference
{
// Might need this when GetRealObjecting
[NonSerialized]
private Encoding realEncoding = null;
// Constructor called by serialization, have to handle deserializing from Everett
internal Decoder(SerializationInfo info, StreamingContext context)
{
// Any info?
if (info==null) throw new ArgumentNullException("info");
this.realEncoding = (Encoding)info.GetValue("encoding", typeof(Encoding));
}
// Just get it from GetDecider
public Object GetRealObject(StreamingContext context)
{
return this.realEncoding.GetDecoder();
}
// ISerializable implementation, get data for this object
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
// We cannot ever call this.
BCLDebug.Assert(false, "Didn't expect to make it to CodePageEncoding.Decoder.GetObjectData");
throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException"));
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// WARNING:
//
// This is just an IObjectReference proxy for the Code Page Encodings.
namespace System.Text
{
using System;
using System.Runtime.Serialization;
using System.Security.Permissions;
/*=================================CodePageEncoding==================================
** This class is here only to deserialize the Code Page classes from Everett (V1.1) into
** Appropriate Whidbey (V2.0) objects. We also serialize the Whidbey classes
** using this proxy since we pretty much need one anyway and that solves Whidbey
** to Everett compatibility as well.
==============================================================================*/
[Serializable()]
internal sealed class CodePageEncoding : ISerializable, IObjectReference
{
// Temp stuff
[NonSerialized]
private int m_codePage;
[NonSerialized]
private bool m_isReadOnly;
[NonSerialized]
private bool m_deserializedFromEverett = false;
[NonSerialized]
private EncoderFallback encoderFallback = null;
[NonSerialized]
private DecoderFallback decoderFallback = null;
// Might need this when GetRealObjecting
[NonSerialized]
private Encoding realEncoding = null;
// Constructor called by serialization.
internal CodePageEncoding(SerializationInfo info, StreamingContext context)
{
// Any info?
if (info==null) throw new ArgumentNullException("info");
// All versions have a code page
this.m_codePage = (int)info.GetValue("m_codePage", typeof(int));
// See if we have a code page
try
{
//
// Try Whidbey V2.0 Fields
//
this.m_isReadOnly = (bool)info.GetValue("m_isReadOnly", typeof(bool));
this.encoderFallback = (EncoderFallback)info.GetValue("encoderFallback", typeof(EncoderFallback));
this.decoderFallback = (DecoderFallback)info.GetValue("decoderFallback", typeof(DecoderFallback));
}
catch (SerializationException)
{
//
// Didn't have Whidbey things, must be Everett
//
this.m_deserializedFromEverett = true;
// May as well be read only
this.m_isReadOnly = true;
}
}
// Just get it from GetEncoding
public Object GetRealObject(StreamingContext context)
{
// Get our encoding (Note: This has default fallbacks for readonly and everett cases)
this.realEncoding = Encoding.GetEncoding(this.m_codePage);
// If its read only then it uses default fallbacks, otherwise pick up the new ones
// Otherwise we want to leave the new one read only
if (!this.m_deserializedFromEverett && !this.m_isReadOnly)
{
this.realEncoding = (Encoding)this.realEncoding.Clone();
this.realEncoding.EncoderFallback = this.encoderFallback;
this.realEncoding.DecoderFallback = this.decoderFallback;
}
return this.realEncoding;
}
// ISerializable implementation
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
// We cannot ever call this.
BCLDebug.Assert(false, "Didn't expect to make it to CodePageEncoding ISerializable.GetObjectData");
throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException"));
}
// Same problem with the Decoder, this only happens with Everett Decoders
[Serializable]
internal sealed class Decoder : ISerializable, IObjectReference
{
// Might need this when GetRealObjecting
[NonSerialized]
private Encoding realEncoding = null;
// Constructor called by serialization, have to handle deserializing from Everett
internal Decoder(SerializationInfo info, StreamingContext context)
{
// Any info?
if (info==null) throw new ArgumentNullException("info");
this.realEncoding = (Encoding)info.GetValue("encoding", typeof(Encoding));
}
// Just get it from GetDecider
public Object GetRealObject(StreamingContext context)
{
return this.realEncoding.GetDecoder();
}
// ISerializable implementation, get data for this object
[SecurityPermissionAttribute(SecurityAction.LinkDemand, Flags=SecurityPermissionFlag.SerializationFormatter)]
void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
{
// We cannot ever call this.
BCLDebug.Assert(false, "Didn't expect to make it to CodePageEncoding.Decoder.GetObjectData");
throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException"));
}
}
}
}
// 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
- ZoneButton.cs
- WebZone.cs
- ToolboxItem.cs
- BufferBuilder.cs
- InvokeWebServiceDesigner.cs
- _DomainName.cs
- OpenTypeLayoutCache.cs
- OdbcErrorCollection.cs
- WindowsSpinner.cs
- TraceXPathNavigator.cs
- SettingsContext.cs
- ConnectorRouter.cs
- _ContextAwareResult.cs
- autovalidator.cs
- HostVisual.cs
- PerfProviderCollection.cs
- RtfControlWordInfo.cs
- Wrapper.cs
- MessagePropertyVariants.cs
- EdmFunctionAttribute.cs
- WebPartCancelEventArgs.cs
- TextAutomationPeer.cs
- DataGridColumnStyleMappingNameEditor.cs
- Dynamic.cs
- SQLInt32.cs
- Query.cs
- DesignerView.cs
- PersianCalendar.cs
- ToolStripPanelCell.cs
- GridView.cs
- XmlNavigatorStack.cs
- CreateUserErrorEventArgs.cs
- SqlFlattener.cs
- AccessDataSource.cs
- JsonDeserializer.cs
- TypeReference.cs
- ellipse.cs
- MemberAssignment.cs
- TextParaLineResult.cs
- DelegatedStream.cs
- SQLDateTime.cs
- ExceptionUtil.cs
- FamilyCollection.cs
- MediaContextNotificationWindow.cs
- DataGridViewSelectedCellCollection.cs
- GridViewCancelEditEventArgs.cs
- StateMachineSubscription.cs
- UIElement3D.cs
- MediaSystem.cs
- OuterGlowBitmapEffect.cs
- Win32Exception.cs
- CodeArrayIndexerExpression.cs
- CustomAttributeFormatException.cs
- DataPagerFieldItem.cs
- GlobalItem.cs
- Pipe.cs
- InstrumentationTracker.cs
- SrgsGrammarCompiler.cs
- CompilerError.cs
- autovalidator.cs
- PageStatePersister.cs
- _FtpDataStream.cs
- VirtualDirectoryMappingCollection.cs
- TextCompositionEventArgs.cs
- ToolStripContentPanelRenderEventArgs.cs
- ResourceBinder.cs
- SafeEventLogWriteHandle.cs
- UnsafeMethods.cs
- WebConfigurationHostFileChange.cs
- XmlCustomFormatter.cs
- SystemPens.cs
- Point3DValueSerializer.cs
- LoopExpression.cs
- MarkerProperties.cs
- WhitespaceRuleReader.cs
- TextControlDesigner.cs
- CqlWriter.cs
- VarRefManager.cs
- EditorZoneBase.cs
- ModelTreeEnumerator.cs
- sqlnorm.cs
- bidPrivateBase.cs
- IntPtr.cs
- NetSectionGroup.cs
- ObjectListItemCollection.cs
- RightsManagementEncryptionTransform.cs
- HttpModuleActionCollection.cs
- WebPartDeleteVerb.cs
- MulticastOption.cs
- WorkflowOperationFault.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- XamlParser.cs
- WindowsFormsLinkLabel.cs
- EditorZoneBase.cs
- SimpleLine.cs
- SafeSerializationManager.cs
- RSAOAEPKeyExchangeFormatter.cs
- ObjectResult.cs
- Tool.cs
- ToolStripPanelDesigner.cs