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
- MemoryMappedView.cs
- BindUriHelper.cs
- CodeDomDesignerLoader.cs
- HttpHandlersSection.cs
- ClrPerspective.cs
- HorizontalAlignConverter.cs
- PeerToPeerException.cs
- StateRuntime.cs
- SqlNodeAnnotations.cs
- DataPagerFieldCollection.cs
- CharKeyFrameCollection.cs
- CriticalHandle.cs
- SendMailErrorEventArgs.cs
- ValueTypeFixupInfo.cs
- PropertyRecord.cs
- FacetValueContainer.cs
- SelectionWordBreaker.cs
- DropShadowBitmapEffect.cs
- ActionItem.cs
- InternalRelationshipCollection.cs
- AdRotator.cs
- DataPointer.cs
- FileVersionInfo.cs
- ObjectHelper.cs
- SessionStateUtil.cs
- AssemblyBuilder.cs
- MailWebEventProvider.cs
- DbConvert.cs
- SiteMapNode.cs
- backend.cs
- PrimitiveRenderer.cs
- SqlExpressionNullability.cs
- BooleanAnimationBase.cs
- RoleBoolean.cs
- MatrixTransform.cs
- WeakEventTable.cs
- Merger.cs
- ReferenceEqualityComparer.cs
- CodeSubDirectoriesCollection.cs
- MenuStrip.cs
- BodyGlyph.cs
- BindingContext.cs
- ToolStripPanelRenderEventArgs.cs
- DataControlExtensions.cs
- DocumentOrderComparer.cs
- GroupDescription.cs
- ClientViaElement.cs
- LineInfo.cs
- Nullable.cs
- WeakReferenceList.cs
- ItemDragEvent.cs
- StylusDevice.cs
- CodeDelegateInvokeExpression.cs
- NotConverter.cs
- _CookieModule.cs
- EnumerableCollectionView.cs
- TraceListeners.cs
- Int16KeyFrameCollection.cs
- DataViewManager.cs
- SpecularMaterial.cs
- IndexedDataBuffer.cs
- XmlEnumAttribute.cs
- ProxyWebPartManager.cs
- CompositionTarget.cs
- AuthenticationConfig.cs
- SelfSignedCertificate.cs
- EditorAttribute.cs
- DocumentViewerHelper.cs
- SimpleBitVector32.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- AsymmetricSignatureDeformatter.cs
- XmlAutoDetectWriter.cs
- PresentationSource.cs
- LayoutSettings.cs
- ComplexPropertyEntry.cs
- Pair.cs
- ToolStripOverflow.cs
- ListViewContainer.cs
- RoutedUICommand.cs
- HotSpot.cs
- SharedPerformanceCounter.cs
- ExtensionCollection.cs
- DateTimeParse.cs
- MembershipAdapter.cs
- RecognizeCompletedEventArgs.cs
- PeerTransportSecuritySettings.cs
- ScalarOps.cs
- DetailsViewInsertEventArgs.cs
- TextContainerHelper.cs
- Point3DCollection.cs
- TypedTableBase.cs
- ReturnEventArgs.cs
- AssemblyAttributes.cs
- InternalMappingException.cs
- PerformanceCounter.cs
- HttpCookiesSection.cs
- DirectoryNotFoundException.cs
- CompiledQueryCacheEntry.cs
- StyleBamlRecordReader.cs
- Stopwatch.cs