Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Base / MS / Internal / BaseHashHelper.cs / 1305600 / BaseHashHelper.cs
//---------------------------------------------------------------------------- // //// Copyright (C) 2003 by Microsoft Corporation. All rights reserved. // // // // Description: Static class to help work around hashing-related bugs. // //--------------------------------------------------------------------------- using System; using System.Reflection; // Assembly using System.Collections.Specialized; // HybridDictionary using MS.Internal.WindowsBase; // [FriendAccessAllowed] namespace MS.Internal { [FriendAccessAllowed] // defined in Base, used in Core and Framework internal static class BaseHashHelper { static BaseHashHelper() { // register bad types from WindowsBase MS.Internal.Hashing.WindowsBase.HashHelper.Initialize(); } [FriendAccessAllowed] // defined in Base, used in Core and Framework internal static void RegisterTypes(Assembly assembly, Type[] types) { HybridDictionary dictionary = DictionaryFromList(types); lock(_table) { _table[assembly] = dictionary; } } // Some types don't have reliable hash codes - the hashcode can change // during the lifetime of an object of that type. Such an object cannot // be used as the key of a hashtable or dictionary. This is where we // detect such objects, so the caller can find some other way to cope. [FriendAccessAllowed] // defined in Base, used in Core and Framework internal static bool HasReliableHashCode(object item) { // null doesn't actually have a hashcode at all. This method can be // called with a representative item from a collection - if the // representative is null, we'll be pessimistic and assume the // items in the collection should not be hashed. if (item == null) return false; Type type = item.GetType(); Assembly assembly = type.Assembly; HybridDictionary dictionary; lock(_table) { dictionary = (HybridDictionary)_table[assembly]; } if (dictionary == null) { dictionary = new HybridDictionary(); lock(_table) { _table[assembly] = dictionary; } } return !dictionary.Contains(type); } // populate a dictionary from the given list private static HybridDictionary DictionaryFromList(Type[] types) { HybridDictionary dictionary = new HybridDictionary(types.Length); for (int i=0; i
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SecUtil.cs
- DependencyPropertyValueSerializer.cs
- ResourceContainer.cs
- LOSFormatter.cs
- DrawListViewItemEventArgs.cs
- HtmlLink.cs
- SID.cs
- ConfigXmlDocument.cs
- MiniMapControl.xaml.cs
- ExpressionPrefixAttribute.cs
- GorillaCodec.cs
- EntityDataSourceDesigner.cs
- CellTreeSimplifier.cs
- hresults.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- ProfileInfo.cs
- XmlFileEditor.cs
- DataGridViewColumnStateChangedEventArgs.cs
- COAUTHINFO.cs
- WaitHandle.cs
- ItemsControlAutomationPeer.cs
- Guid.cs
- Application.cs
- EventEntry.cs
- tibetanshape.cs
- ConfigurationSection.cs
- ErrorWebPart.cs
- PageDeviceFont.cs
- StorageAssociationTypeMapping.cs
- DataGridItemCollection.cs
- DeclaredTypeElement.cs
- XmlSchemaAnnotation.cs
- RootProfilePropertySettingsCollection.cs
- QuaternionAnimation.cs
- DataListAutoFormat.cs
- NumberSubstitution.cs
- MinMaxParagraphWidth.cs
- StylusPointPropertyInfo.cs
- XmlParserContext.cs
- ByteFacetDescriptionElement.cs
- LowerCaseStringConverter.cs
- EntityClassGenerator.cs
- TrackingDataItemValue.cs
- DeviceSpecificDesigner.cs
- OneOfTypeConst.cs
- SafeHandles.cs
- CategoryAttribute.cs
- GridViewSelectEventArgs.cs
- DetailsViewRow.cs
- Point3DKeyFrameCollection.cs
- ZipQueryOperator.cs
- WebPermission.cs
- AsymmetricSignatureDeformatter.cs
- GeometryGroup.cs
- Material.cs
- ButtonColumn.cs
- CodeTypeMemberCollection.cs
- ViewBase.cs
- xdrvalidator.cs
- SafeRightsManagementQueryHandle.cs
- TextRunCacheImp.cs
- ObjectDataSourceDisposingEventArgs.cs
- ValueTable.cs
- DataBoundControlDesigner.cs
- OpenTypeMethods.cs
- DragStartedEventArgs.cs
- FixedPage.cs
- SendingRequestEventArgs.cs
- SqlRowUpdatedEvent.cs
- OverflowException.cs
- KeyValueConfigurationCollection.cs
- SplitterCancelEvent.cs
- BevelBitmapEffect.cs
- ProvidersHelper.cs
- StreamInfo.cs
- ImageSource.cs
- Repeater.cs
- MsmqInputSessionChannelListener.cs
- MediaPlayerState.cs
- DataGridViewTopLeftHeaderCell.cs
- ProfessionalColors.cs
- EntityDataSourceContextCreatedEventArgs.cs
- VideoDrawing.cs
- Certificate.cs
- BitmapVisualManager.cs
- CodeDOMUtility.cs
- ToolStripManager.cs
- WriteFileContext.cs
- MD5CryptoServiceProvider.cs
- InlinedAggregationOperatorEnumerator.cs
- SafeLibraryHandle.cs
- InstanceDataCollection.cs
- AnnotationDocumentPaginator.cs
- DocumentScope.cs
- EntityDataSourceEntityTypeFilterItem.cs
- PointF.cs
- DesignerView.Commands.cs
- PageAsyncTask.cs
- WebPartCatalogAddVerb.cs
- XMLDiffLoader.cs