Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- DesignerLoader.cs
- DataServiceConfiguration.cs
- IdlingCommunicationPool.cs
- CompilerScopeManager.cs
- ServicePoint.cs
- Rss20ItemFormatter.cs
- shaperfactoryquerycacheentry.cs
- LightweightEntityWrapper.cs
- Message.cs
- FontStyles.cs
- CodeGroup.cs
- ISAPIApplicationHost.cs
- HuffCodec.cs
- TreeNodeBindingCollection.cs
- CodeLabeledStatement.cs
- DecimalAnimationUsingKeyFrames.cs
- StyleReferenceConverter.cs
- Panel.cs
- PackWebResponse.cs
- ErrorReporting.cs
- XmlWellformedWriter.cs
- LinkUtilities.cs
- SystemInfo.cs
- XmlQueryRuntime.cs
- GenericWebPart.cs
- ConfigXmlComment.cs
- WebPartZoneBaseDesigner.cs
- SiteOfOriginContainer.cs
- UrlPropertyAttribute.cs
- AssemblyBuilder.cs
- Queue.cs
- WindowsStartMenu.cs
- DataServiceKeyAttribute.cs
- Int64Animation.cs
- IntAverageAggregationOperator.cs
- FileAuthorizationModule.cs
- SmiRecordBuffer.cs
- WebPartZoneCollection.cs
- HostedHttpTransportManager.cs
- Thickness.cs
- PathGeometry.cs
- ImageIndexConverter.cs
- DocumentSequence.cs
- LocalValueEnumerator.cs
- FaultFormatter.cs
- ScrollViewer.cs
- XmlAttributeCollection.cs
- RemotingServices.cs
- ProcessThread.cs
- AutomationTextAttribute.cs
- BidPrivateBase.cs
- ResolvedKeyFrameEntry.cs
- Html32TextWriter.cs
- XmlSerializer.cs
- DisposableCollectionWrapper.cs
- TdsEnums.cs
- ContainerControl.cs
- EntitySqlQueryBuilder.cs
- DataGridCaption.cs
- TextRunTypographyProperties.cs
- OdbcPermission.cs
- Image.cs
- UInt64.cs
- KeyInterop.cs
- DbTransaction.cs
- SafeFileHandle.cs
- ResponseBodyWriter.cs
- DataKey.cs
- BypassElementCollection.cs
- TreeNodeConverter.cs
- xmlsaver.cs
- CreateUserWizardDesigner.cs
- WsdlBuildProvider.cs
- WebConfigurationHost.cs
- securitycriticaldataClass.cs
- BinaryReader.cs
- MulticastNotSupportedException.cs
- dbdatarecord.cs
- SQLBoolean.cs
- PermissionSet.cs
- DataPagerCommandEventArgs.cs
- DBCSCodePageEncoding.cs
- OdbcException.cs
- InfoCardBaseException.cs
- FieldAccessException.cs
- NativeMethods.cs
- EventlogProvider.cs
- Effect.cs
- RegexCode.cs
- WsdlBuildProvider.cs
- HeaderElement.cs
- BitStack.cs
- ClientConfigPaths.cs
- StrokeSerializer.cs
- ProcessProtocolHandler.cs
- StandardCommandToolStripMenuItem.cs
- SessionSymmetricTransportSecurityProtocolFactory.cs
- AsymmetricSecurityProtocol.cs
- SchemaNotation.cs
- ProfileParameter.cs