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
- DataGridViewColumn.cs
- ZeroOpNode.cs
- RawTextInputReport.cs
- BinaryNode.cs
- CheckBoxFlatAdapter.cs
- TextProperties.cs
- ConnectionInterfaceCollection.cs
- CodeAssignStatement.cs
- GroupAggregateExpr.cs
- AccessControlList.cs
- PropertyItem.cs
- ListItem.cs
- ConstrainedDataObject.cs
- RegisteredHiddenField.cs
- AdRotator.cs
- Certificate.cs
- GB18030Encoding.cs
- ItemCheckEvent.cs
- StorageEntityContainerMapping.cs
- BamlLocalizer.cs
- ExpressionBuilderCollection.cs
- SqlFlattener.cs
- SelectionPatternIdentifiers.cs
- Invariant.cs
- SqlRowUpdatedEvent.cs
- ColorTranslator.cs
- NonParentingControl.cs
- XmlToDatasetMap.cs
- PropertyInformationCollection.cs
- FtpCachePolicyElement.cs
- RelatedPropertyManager.cs
- ContentHostHelper.cs
- TextTreeFixupNode.cs
- ClrPerspective.cs
- MemberHolder.cs
- InputMethodStateTypeInfo.cs
- Soap.cs
- BitmapDecoder.cs
- AnnotationAdorner.cs
- AppendHelper.cs
- Help.cs
- TextMarkerSource.cs
- DataColumnMappingCollection.cs
- TrackingRecord.cs
- SiteMapNodeCollection.cs
- VolatileResourceManager.cs
- InvalidWorkflowException.cs
- StandardOleMarshalObject.cs
- MSAANativeProvider.cs
- ScaleTransform.cs
- StateMachineExecutionState.cs
- XPathParser.cs
- SafePEFileHandle.cs
- XmlSchemaGroupRef.cs
- XmlSerializerNamespaces.cs
- MultiTargetingUtil.cs
- PrtTicket_Public.cs
- PropertyGridView.cs
- XmlSchemaAnyAttribute.cs
- LineBreakRecord.cs
- TrustDriver.cs
- XmlSortKey.cs
- FixedSchema.cs
- TranslateTransform3D.cs
- InputProcessorProfiles.cs
- StringBuilder.cs
- ToolBarOverflowPanel.cs
- SecurityCookieModeValidator.cs
- NullableFloatMinMaxAggregationOperator.cs
- XsltOutput.cs
- UInt32Converter.cs
- ListViewCancelEventArgs.cs
- HasCopySemanticsAttribute.cs
- EntityDataSourceWrapper.cs
- WindowsListViewGroup.cs
- XmlValidatingReader.cs
- ConfigurationManager.cs
- UInt32Storage.cs
- WorkflowPersistenceService.cs
- ModelItemCollection.cs
- DataBindingExpressionBuilder.cs
- ServiceHostingEnvironment.cs
- unitconverter.cs
- MediaScriptCommandRoutedEventArgs.cs
- DivideByZeroException.cs
- SqlErrorCollection.cs
- counter.cs
- Attributes.cs
- FixedSchema.cs
- ColumnMap.cs
- XmlBinaryReader.cs
- Selection.cs
- ApplicationManager.cs
- BindingCompleteEventArgs.cs
- TextServicesDisplayAttributePropertyRanges.cs
- HttpModuleCollection.cs
- XmlNodeList.cs
- FirewallWrapper.cs
- EntityTypeEmitter.cs
- DataGridViewCell.cs