Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Shared / MS / Internal / HashHelper.cs / 1 / HashHelper.cs
//----------------------------------------------------------------------------
//
//
// Copyright (C) 2003 by Microsoft Corporation. All rights reserved.
//
//
//
// Description: Static class to help work around hashing-related bugs.
//
//---------------------------------------------------------------------------
using System;
using MS.Internal; // BaseHashHelper
#if WINDOWS_BASE
namespace MS.Internal.Hashing.WindowsBase
#elif PRESENTATION_CORE
namespace MS.Internal.Hashing.PresentationCore
#elif PRESENTATIONFRAMEWORK
using System.ComponentModel; // ICustomTypeDescriptor
namespace MS.Internal.Hashing.PresentationFramework
#else
#error Attempt to define HashHelper in an unknown assembly.
namespace MS.Internal.YourAssemblyName
#endif
{
internal static class HashHelper
{
// The class cctor registers this assembly's exceptional types with
// the base helper.
static HashHelper()
{
Initialize(); // this makes FxCop happy - otherwise Initialize is "unused code"
Type[] types = new Type[] {
#if WINDOWS_BASE
#elif PRESENTATION_CORE
typeof(System.Windows.Media.CharacterMetrics), // bug 1612093
typeof(System.Windows.Ink.ExtendedProperty), // bug 1612101
typeof(System.Windows.Media.FamilyTypeface), // bug 1612103
typeof(System.Windows.Media.NumberSubstitution), // bug 1612105
#elif PRESENTATIONFRAMEWORK
typeof(System.Windows.Markup.Localizer.BamlLocalizableResource), // bug 1612118
typeof(System.Windows.ComponentResourceKey), // bug 1612119
#endif
};
BaseHashHelper.RegisterTypes(typeof(HashHelper).Assembly, types);
// initialize lower-level assemblies
#if PRESENTATIONFRAMEWORK
MS.Internal.Hashing.PresentationCore.HashHelper.Initialize();
#endif
}
// certain objects don't have reliable hashcodes, and cannot be used
// within a Hashtable, Dictionary, etc.
internal static bool HasReliableHashCode(object item)
{
return BaseHashHelper.HasReliableHashCode(item);
}
// this method doesn't do anything, but calling it makes sure the static
// cctor gets called
internal static void Initialize()
{
}
#if PRESENTATIONFRAMEWORK
// Helper to identify DataRowView
internal static bool IsDataRowView(object item, Type type)
{
// the earlier tests filter out most false results before doing
// the final test. If we did the final test first, it would load
// System.Data unnecessarily.
return (item is ICustomTypeDescriptor &&
item is IDataErrorInfo &&
type.Namespace == "System.Data" &&
IsDataRowViewType(type));
}
// separate method to avoid loading System.Data until needed
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
private static bool IsDataRowViewType(Type type)
{
return (type == typeof(System.Data.DataRowView));
}
#endif
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//----------------------------------------------------------------------------
//
//
// Copyright (C) 2003 by Microsoft Corporation. All rights reserved.
//
//
//
// Description: Static class to help work around hashing-related bugs.
//
//---------------------------------------------------------------------------
using System;
using MS.Internal; // BaseHashHelper
#if WINDOWS_BASE
namespace MS.Internal.Hashing.WindowsBase
#elif PRESENTATION_CORE
namespace MS.Internal.Hashing.PresentationCore
#elif PRESENTATIONFRAMEWORK
using System.ComponentModel; // ICustomTypeDescriptor
namespace MS.Internal.Hashing.PresentationFramework
#else
#error Attempt to define HashHelper in an unknown assembly.
namespace MS.Internal.YourAssemblyName
#endif
{
internal static class HashHelper
{
// The class cctor registers this assembly's exceptional types with
// the base helper.
static HashHelper()
{
Initialize(); // this makes FxCop happy - otherwise Initialize is "unused code"
Type[] types = new Type[] {
#if WINDOWS_BASE
#elif PRESENTATION_CORE
typeof(System.Windows.Media.CharacterMetrics), // bug 1612093
typeof(System.Windows.Ink.ExtendedProperty), // bug 1612101
typeof(System.Windows.Media.FamilyTypeface), // bug 1612103
typeof(System.Windows.Media.NumberSubstitution), // bug 1612105
#elif PRESENTATIONFRAMEWORK
typeof(System.Windows.Markup.Localizer.BamlLocalizableResource), // bug 1612118
typeof(System.Windows.ComponentResourceKey), // bug 1612119
#endif
};
BaseHashHelper.RegisterTypes(typeof(HashHelper).Assembly, types);
// initialize lower-level assemblies
#if PRESENTATIONFRAMEWORK
MS.Internal.Hashing.PresentationCore.HashHelper.Initialize();
#endif
}
// certain objects don't have reliable hashcodes, and cannot be used
// within a Hashtable, Dictionary, etc.
internal static bool HasReliableHashCode(object item)
{
return BaseHashHelper.HasReliableHashCode(item);
}
// this method doesn't do anything, but calling it makes sure the static
// cctor gets called
internal static void Initialize()
{
}
#if PRESENTATIONFRAMEWORK
// Helper to identify DataRowView
internal static bool IsDataRowView(object item, Type type)
{
// the earlier tests filter out most false results before doing
// the final test. If we did the final test first, it would load
// System.Data unnecessarily.
return (item is ICustomTypeDescriptor &&
item is IDataErrorInfo &&
type.Namespace == "System.Data" &&
IsDataRowViewType(type));
}
// separate method to avoid loading System.Data until needed
[System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
private static bool IsDataRowViewType(Type type)
{
return (type == typeof(System.Data.DataRowView));
}
#endif
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- NamespaceCollection.cs
- PointAnimation.cs
- CapabilitiesAssignment.cs
- ImageDesigner.cs
- DefaultSerializationProviderAttribute.cs
- ObjectDataSourceFilteringEventArgs.cs
- CqlIdentifiers.cs
- GenericAuthenticationEventArgs.cs
- Helpers.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- SqlTopReducer.cs
- BehaviorEditorPart.cs
- MetabaseSettings.cs
- ItemPager.cs
- TextEffect.cs
- BindingEntityInfo.cs
- MultilineStringEditor.cs
- OpenTypeLayoutCache.cs
- RawStylusInputCustomData.cs
- CurrencyManager.cs
- WmlControlAdapter.cs
- EntityType.cs
- XmlBinaryReader.cs
- HtmlTextArea.cs
- FilteredXmlReader.cs
- sqlnorm.cs
- ConfigurationSectionGroup.cs
- IChannel.cs
- CompilerGlobalScopeAttribute.cs
- WebConfigurationManager.cs
- diagnosticsswitches.cs
- DataConnectionHelper.cs
- SafeProcessHandle.cs
- sitestring.cs
- CapabilitiesRule.cs
- Stack.cs
- WebServiceEnumData.cs
- UrlMappingCollection.cs
- PnrpPeerResolverBindingElement.cs
- ScriptControl.cs
- RuleSettings.cs
- FormatterServicesNoSerializableCheck.cs
- VersionUtil.cs
- Config.cs
- FlowLayoutSettings.cs
- TabItem.cs
- MenuCommand.cs
- LOSFormatter.cs
- IPCCacheManager.cs
- AdPostCacheSubstitution.cs
- FunctionNode.cs
- ClientUrlResolverWrapper.cs
- Avt.cs
- DispatcherExceptionEventArgs.cs
- LinqDataSourceContextEventArgs.cs
- XslCompiledTransform.cs
- wgx_render.cs
- ScalarType.cs
- COM2PictureConverter.cs
- PointAnimationBase.cs
- JsonStringDataContract.cs
- ISAPIApplicationHost.cs
- PtsHelper.cs
- Base64Encoder.cs
- TemplateModeChangedEventArgs.cs
- WebPartConnectionsEventArgs.cs
- RadialGradientBrush.cs
- TableColumn.cs
- DataGridRelationshipRow.cs
- NamespaceCollection.cs
- assemblycache.cs
- CheckBoxAutomationPeer.cs
- LazyTextWriterCreator.cs
- ConstructorNeedsTagAttribute.cs
- DiscreteKeyFrames.cs
- ChineseLunisolarCalendar.cs
- ReadOnlyNameValueCollection.cs
- DataObject.cs
- HttpBrowserCapabilitiesWrapper.cs
- HtmlShimManager.cs
- DeploymentSection.cs
- TableRowCollection.cs
- OpenTypeLayout.cs
- MetadataCache.cs
- brushes.cs
- CompiledRegexRunnerFactory.cs
- GridView.cs
- DbConnectionClosed.cs
- FontWeightConverter.cs
- CellRelation.cs
- XmlSchemaValidator.cs
- TagPrefixInfo.cs
- LabelEditEvent.cs
- BCLDebug.cs
- RotateTransform.cs
- Parameter.cs
- SerializationAttributes.cs
- FlowLayoutSettings.cs
- PathGradientBrush.cs
- ExtendedProperty.cs