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
- TextLineBreak.cs
- ComponentManagerBroker.cs
- ControlEvent.cs
- MetadataCache.cs
- ISO2022Encoding.cs
- UnsafeNativeMethods.cs
- SqlUserDefinedAggregateAttribute.cs
- FormClosedEvent.cs
- FixedTextView.cs
- MessageQueuePermissionEntryCollection.cs
- EdgeModeValidation.cs
- MetadataCache.cs
- TriggerCollection.cs
- ListSortDescriptionCollection.cs
- AsmxEndpointPickerExtension.cs
- DetailsViewPageEventArgs.cs
- SynchronizedDispatch.cs
- ExpressionBuilderContext.cs
- OleDbRowUpdatingEvent.cs
- ObjectCache.cs
- RegexMatch.cs
- LocalizedNameDescriptionPair.cs
- SqlNotificationRequest.cs
- SecUtil.cs
- GroupQuery.cs
- HTMLTextWriter.cs
- WorkflowWebService.cs
- SelectionProcessor.cs
- SqlCommandBuilder.cs
- _AutoWebProxyScriptWrapper.cs
- TextElement.cs
- COM2ICategorizePropertiesHandler.cs
- _OverlappedAsyncResult.cs
- SQLByte.cs
- StringReader.cs
- OdbcUtils.cs
- WindowInteropHelper.cs
- precedingquery.cs
- DataGridViewCellStyleConverter.cs
- ReadOnlyAttribute.cs
- BindingElementExtensionElement.cs
- SiteMapDesignerDataSourceView.cs
- UpdateException.cs
- StorageEntityTypeMapping.cs
- TransformerTypeCollection.cs
- MruCache.cs
- CleanUpVirtualizedItemEventArgs.cs
- Geometry.cs
- Enum.cs
- CodeBinaryOperatorExpression.cs
- UniqueIdentifierService.cs
- CheckoutException.cs
- CollectionBase.cs
- ExtentJoinTreeNode.cs
- CodeSnippetCompileUnit.cs
- CodeDefaultValueExpression.cs
- documentation.cs
- AuthenticodeSignatureInformation.cs
- AudioFormatConverter.cs
- ProfileSection.cs
- SatelliteContractVersionAttribute.cs
- StylusPointProperties.cs
- JapaneseCalendar.cs
- Pen.cs
- Figure.cs
- OracleCommand.cs
- FixedPageAutomationPeer.cs
- RectangleGeometry.cs
- DrawingContextDrawingContextWalker.cs
- StructuralComparisons.cs
- AtomServiceDocumentSerializer.cs
- RowUpdatingEventArgs.cs
- PropertyGridEditorPart.cs
- ResourceWriter.cs
- X509PeerCertificateAuthenticationElement.cs
- EntityViewGenerationAttribute.cs
- WindowsTab.cs
- HierarchicalDataBoundControlAdapter.cs
- assemblycache.cs
- LinqExpressionNormalizer.cs
- XmlNullResolver.cs
- AbstractDataSvcMapFileLoader.cs
- RepeaterItemCollection.cs
- ConsumerConnectionPoint.cs
- ListViewContainer.cs
- HttpVersion.cs
- EntityTypeEmitter.cs
- RichTextBoxAutomationPeer.cs
- SmiGettersStream.cs
- InputElement.cs
- CorrelationManager.cs
- XhtmlBasicValidatorAdapter.cs
- MediaPlayerState.cs
- RemotingAttributes.cs
- AvTraceDetails.cs
- MediaElement.cs
- SchemaCollectionPreprocessor.cs
- EventProviderTraceListener.cs
- Point3DAnimationBase.cs
- LongTypeConverter.cs