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
- ToolboxItemFilterAttribute.cs
- StringDictionary.cs
- MarkupProperty.cs
- RewritingSimplifier.cs
- ActivityBuilderHelper.cs
- TabPage.cs
- ConstructorArgumentAttribute.cs
- PageRequestManager.cs
- SqlInternalConnection.cs
- DirectoryObjectSecurity.cs
- SelectionPattern.cs
- SharingService.cs
- MonthChangedEventArgs.cs
- InternalUserCancelledException.cs
- Point3D.cs
- PolicyLevel.cs
- PasswordDeriveBytes.cs
- XamlHostingConfiguration.cs
- Aggregates.cs
- DataFormats.cs
- BlurBitmapEffect.cs
- FontInfo.cs
- MembershipUser.cs
- LicenseContext.cs
- CompoundFileReference.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- PropertyDescriptorCollection.cs
- DataSetMappper.cs
- CachedPathData.cs
- TemplateBuilder.cs
- Substitution.cs
- FormCollection.cs
- StylusButtonEventArgs.cs
- SelectQueryOperator.cs
- HandleRef.cs
- UrlAuthFailedErrorFormatter.cs
- InputDevice.cs
- Lasso.cs
- AssemblyHash.cs
- GeometryModel3D.cs
- DeviceContext2.cs
- XPathAncestorQuery.cs
- CryptoKeySecurity.cs
- TogglePatternIdentifiers.cs
- DataGridViewAddColumnDialog.cs
- SharedPerformanceCounter.cs
- pingexception.cs
- XmlAttributeCache.cs
- DataServiceStreamResponse.cs
- ByteStream.cs
- WebPartVerbCollection.cs
- RuntimeConfig.cs
- __Error.cs
- PersistenceException.cs
- TextWriterEngine.cs
- _Semaphore.cs
- HyperLinkColumn.cs
- PrintDocument.cs
- Tool.cs
- QueryExpr.cs
- PageVisual.cs
- HtmlTable.cs
- EncoderReplacementFallback.cs
- PostBackOptions.cs
- EncryptedReference.cs
- CodeMethodInvokeExpression.cs
- OutputCacheProfileCollection.cs
- validation.cs
- MatrixAnimationUsingPath.cs
- SelectManyQueryOperator.cs
- InvalidDataException.cs
- DbConnectionPoolGroup.cs
- ArraySet.cs
- DataGridItemEventArgs.cs
- SHA256Managed.cs
- ContentHostHelper.cs
- Bezier.cs
- Quaternion.cs
- ObjectAnimationBase.cs
- TwoPhaseCommitProxy.cs
- ProfilePropertyNameValidator.cs
- MemberPathMap.cs
- PTUtility.cs
- sqlinternaltransaction.cs
- _CacheStreams.cs
- IDataContractSurrogate.cs
- OracleDataReader.cs
- PropertyBuilder.cs
- EdmRelationshipRoleAttribute.cs
- SqlXml.cs
- TagPrefixAttribute.cs
- CompilerLocalReference.cs
- ToolBarButtonDesigner.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- AssemblyHash.cs
- InkCanvasSelection.cs
- VerificationAttribute.cs
- WaitHandle.cs
- SessionPageStateSection.cs
- TextRangeProviderWrapper.cs