Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Text / MLangCodePageEncoding.cs / 1 / MLangCodePageEncoding.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// WARNING:
//
// This is just an IObjectReference proxy for the former MLang Encodings (V1.1)
// We keep the old name now even for the Whidbey V2.0 IObjectReference because it also
// works with the Everett V1.1 version.
namespace System.Text
{
using System;
using System.Runtime.Serialization;
using System.Security.Permissions;
/*=================================MLangCodePageEncoding==================================
** This class is here only to deserialize the MLang 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 MLangCodePageEncoding : 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 MLangCodePageEncoding(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 MLangCodePageEncoding ISerializable.GetObjectData");
throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException")); }
// Same problem with the Encoder, this only happens with Everett Encoders
[Serializable]
internal sealed class MLangEncoder : ISerializable, IObjectReference
{
// Might need this when GetRealObjecting
[NonSerialized]
private Encoding realEncoding = null;
// Constructor called by serialization, have to handle deserializing from Everett
internal MLangEncoder(SerializationInfo info, StreamingContext context)
{
// Any info?
if (info==null) throw new ArgumentNullException("info");
this.realEncoding = (Encoding)info.GetValue("m_encoding", typeof(Encoding));
}
// Just get it from GetEncoder
public Object GetRealObject(StreamingContext context)
{
return this.realEncoding.GetEncoder();
}
// 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 MLangCodePageEncoding.MLangEncoder.GetObjectData");
throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException"));
}
}
// Same problem with the Decoder, this only happens with Everett Decoders
[Serializable]
internal sealed class MLangDecoder : ISerializable, IObjectReference
{
// Might need this when GetRealObjecting
[NonSerialized]
private Encoding realEncoding = null;
// Constructor called by serialization, have to handle deserializing from Everett
internal MLangDecoder(SerializationInfo info, StreamingContext context)
{
// Any info?
if (info==null) throw new ArgumentNullException("info");
this.realEncoding = (Encoding)info.GetValue("m_encoding", typeof(Encoding));
}
// Just get it from GetDecoder
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 MLangCodePageEncoding.MLangDecoder.GetObjectData");
throw new ArgumentException(Environment.GetResourceString("Arg_ExecutionEngineException"));
}
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PropertyMetadata.cs
- ConstraintManager.cs
- SQLInt64Storage.cs
- MetadataArtifactLoaderCompositeFile.cs
- ConnectionManagementSection.cs
- Msec.cs
- LingerOption.cs
- EndPoint.cs
- TrackingProfileDeserializationException.cs
- SafeEventHandle.cs
- ListViewUpdateEventArgs.cs
- OpacityConverter.cs
- SymbolEqualComparer.cs
- GlyphRunDrawing.cs
- LinkArea.cs
- XmlAtomicValue.cs
- InputLanguageProfileNotifySink.cs
- OdbcFactory.cs
- HwndSourceKeyboardInputSite.cs
- HashMembershipCondition.cs
- FixedHighlight.cs
- OleDbCommand.cs
- GlyphsSerializer.cs
- DataSourceCache.cs
- WebServiceHandler.cs
- SerializationAttributes.cs
- StylusShape.cs
- ToolStripItemRenderEventArgs.cs
- SiteMapNodeItem.cs
- SchemaElementDecl.cs
- ScrollChrome.cs
- EventLogInformation.cs
- ButtonFlatAdapter.cs
- SignatureDescription.cs
- AutomationTextAttribute.cs
- ScrollProviderWrapper.cs
- ConfigurationSectionGroup.cs
- XmlSigningNodeWriter.cs
- RuleSetCollection.cs
- TrustLevelCollection.cs
- PersonalizableTypeEntry.cs
- MaterialGroup.cs
- WinEventQueueItem.cs
- QualifiedCellIdBoolean.cs
- EdmToObjectNamespaceMap.cs
- CodeBlockBuilder.cs
- SubMenuStyleCollection.cs
- StringDictionary.cs
- streamingZipPartStream.cs
- CultureInfoConverter.cs
- SoapIncludeAttribute.cs
- SuppressMessageAttribute.cs
- SecurityVersion.cs
- ChildTable.cs
- EventQueueState.cs
- XmlEncodedRawTextWriter.cs
- SingleResultAttribute.cs
- FolderLevelBuildProviderAppliesToAttribute.cs
- ValidatorUtils.cs
- WebConfigurationManager.cs
- XmlDocument.cs
- FontUnitConverter.cs
- HScrollProperties.cs
- ScrollViewer.cs
- CommunicationObjectFaultedException.cs
- Win32.cs
- AlignmentYValidation.cs
- TypedElement.cs
- StandardOleMarshalObject.cs
- WindowsRegion.cs
- MessageParameterAttribute.cs
- WebPartDeleteVerb.cs
- TextRunCache.cs
- SamlAssertionKeyIdentifierClause.cs
- DropDownButton.cs
- DataGrid.cs
- ExpiredSecurityTokenException.cs
- RawKeyboardInputReport.cs
- Module.cs
- TextStore.cs
- EncodingInfo.cs
- ELinqQueryState.cs
- BamlTreeNode.cs
- Slider.cs
- WebPartDisplayModeCancelEventArgs.cs
- OleDbError.cs
- WorkflowRuntimeSection.cs
- ToolStripDropDownMenu.cs
- SqlCommandSet.cs
- ProfilePropertyNameValidator.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- CollectionsUtil.cs
- Int32CAMarshaler.cs
- ContentElement.cs
- InvalidOperationException.cs
- SettingsPropertyCollection.cs
- CopyOnWriteList.cs
- SqlSelectStatement.cs
- IntegerValidator.cs
- HyperLinkStyle.cs