Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- AssemblyHash.cs
- XhtmlBasicTextBoxAdapter.cs
- RelationalExpressions.cs
- MinMaxParagraphWidth.cs
- PersianCalendar.cs
- StreamingContext.cs
- DataObjectFieldAttribute.cs
- QueryContinueDragEventArgs.cs
- XmlSchemaObjectTable.cs
- UInt16.cs
- WindowsStatusBar.cs
- EdmPropertyAttribute.cs
- SqlCharStream.cs
- XmlSchemaObjectTable.cs
- ParserHooks.cs
- CompatibleComparer.cs
- FirstMatchCodeGroup.cs
- FontUnitConverter.cs
- PtsPage.cs
- RTLAwareMessageBox.cs
- IdentifierElement.cs
- InternalPermissions.cs
- HostedAspNetEnvironment.cs
- ReceiveContext.cs
- ManagedFilter.cs
- ListItemViewControl.cs
- DbReferenceCollection.cs
- FixedDocument.cs
- CryptoProvider.cs
- WebPartDisplayMode.cs
- EntityFrameworkVersions.cs
- Encoding.cs
- RadioButtonStandardAdapter.cs
- ListViewGroupItemCollection.cs
- ManagementOptions.cs
- SqlLiftWhereClauses.cs
- ScriptingJsonSerializationSection.cs
- StylusPointPropertyInfo.cs
- Stack.cs
- ControlPager.cs
- InheritablePropertyChangeInfo.cs
- ToolStripLocationCancelEventArgs.cs
- DBConnectionString.cs
- SqlInternalConnection.cs
- Size.cs
- TextAdaptor.cs
- Tuple.cs
- BaseUriHelper.cs
- NavigationWindow.cs
- CodeIterationStatement.cs
- CodeGotoStatement.cs
- SafeNativeMethods.cs
- XPathSelectionIterator.cs
- XmlQualifiedName.cs
- DocumentSchemaValidator.cs
- CodeGotoStatement.cs
- ComplexObject.cs
- ClientType.cs
- MediaTimeline.cs
- JsonDeserializer.cs
- SmiGettersStream.cs
- ValuePattern.cs
- RegexCaptureCollection.cs
- InvokePattern.cs
- SrgsSemanticInterpretationTag.cs
- XPathPatternBuilder.cs
- WinInet.cs
- _HeaderInfo.cs
- KerberosSecurityTokenProvider.cs
- ClassValidator.cs
- Rect.cs
- MulticastIPAddressInformationCollection.cs
- HttpServerUtilityWrapper.cs
- DataGridHeaderBorder.cs
- SiteMapNode.cs
- EnumValAlphaComparer.cs
- FacetDescription.cs
- DBPropSet.cs
- IIS7UserPrincipal.cs
- UMPAttributes.cs
- EdmProperty.cs
- DataSourceListEditor.cs
- ImageMap.cs
- SqlCrossApplyToCrossJoin.cs
- ellipse.cs
- XmlNamespaceMapping.cs
- DebugInfo.cs
- Matrix3DStack.cs
- thaishape.cs
- RewritingProcessor.cs
- RPIdentityRequirement.cs
- EndGetFileNameFromUserRequest.cs
- _ListenerResponseStream.cs
- ManagementOptions.cs
- DBSchemaRow.cs
- ActionItem.cs
- RegexFCD.cs
- QueryBranchOp.cs
- TaskFormBase.cs
- CacheSection.cs