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
- DbProviderSpecificTypePropertyAttribute.cs
- HtmlTableCellCollection.cs
- TextEditorParagraphs.cs
- ImageClickEventArgs.cs
- MimeTypeMapper.cs
- AudioStateChangedEventArgs.cs
- CounterCreationDataCollection.cs
- MemberHolder.cs
- LocatorPart.cs
- SqlDataSourceCustomCommandPanel.cs
- PartialClassGenerationTask.cs
- ToolStripItem.cs
- ActionMessageFilterTable.cs
- LogSwitch.cs
- InvalidPrinterException.cs
- RuleSettings.cs
- Adorner.cs
- FlowPosition.cs
- XmlSchemaComplexContentExtension.cs
- RuntimeArgumentHandle.cs
- ImageField.cs
- IssuanceLicense.cs
- CallContext.cs
- GridViewCommandEventArgs.cs
- Stroke2.cs
- _BasicClient.cs
- HtmlInputFile.cs
- DbConnectionPoolOptions.cs
- DynamicValidator.cs
- JoinElimination.cs
- Compensate.cs
- SortKey.cs
- EmptyEnumerator.cs
- ImageList.cs
- XmlSignificantWhitespace.cs
- FontFamily.cs
- ClientData.cs
- DataGridViewRowPrePaintEventArgs.cs
- ClonableStack.cs
- SocketElement.cs
- Compiler.cs
- SqlGenericUtil.cs
- XmlNamespaceManager.cs
- MimeTypeMapper.cs
- XmlJsonReader.cs
- ParameterElement.cs
- FormsAuthenticationTicket.cs
- CorrelationToken.cs
- AssertFilter.cs
- WpfKnownMemberInvoker.cs
- GeometryHitTestParameters.cs
- OrthographicCamera.cs
- CorePropertiesFilter.cs
- QueryOutputWriter.cs
- HttpRequestTraceRecord.cs
- NumericUpDown.cs
- RTTrackingProfile.cs
- SrgsGrammarCompiler.cs
- TypeUnloadedException.cs
- ResourceDisplayNameAttribute.cs
- QilPatternVisitor.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- UTF8Encoding.cs
- StateMachineTimers.cs
- TableCellAutomationPeer.cs
- QilName.cs
- DataBoundControl.cs
- UDPClient.cs
- HttpProfileBase.cs
- UndirectedGraph.cs
- BridgeDataReader.cs
- PathNode.cs
- SystemException.cs
- CngProvider.cs
- _Semaphore.cs
- ExecutionEngineException.cs
- RouteValueDictionary.cs
- TableParagraph.cs
- Int32RectConverter.cs
- RegexMatchCollection.cs
- EventLogPermission.cs
- ObjectConverter.cs
- WebEventCodes.cs
- FormCollection.cs
- WindowsSpinner.cs
- WebServiceErrorEvent.cs
- ConnectionInterfaceCollection.cs
- UriTemplateClientFormatter.cs
- StyleXamlParser.cs
- _SSPIWrapper.cs
- TransportManager.cs
- ParallelEnumerableWrapper.cs
- ImageSource.cs
- COM2ComponentEditor.cs
- SourceElementsCollection.cs
- ExpressionNode.cs
- BlobPersonalizationState.cs
- DataServiceRequest.cs
- ChannelDemuxer.cs
- Crypto.cs