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
- DispatcherEventArgs.cs
- RelationshipNavigation.cs
- ConfigurationManagerHelper.cs
- OleDbConnectionFactory.cs
- SerializationInfo.cs
- PropertyInformation.cs
- CustomValidator.cs
- shaperfactoryquerycacheentry.cs
- RowType.cs
- TableColumnCollection.cs
- HtmlCalendarAdapter.cs
- ValueQuery.cs
- QilPatternVisitor.cs
- Schedule.cs
- CoTaskMemUnicodeSafeHandle.cs
- RenderOptions.cs
- TraceLevelStore.cs
- XmlNamespaceDeclarationsAttribute.cs
- BezierSegment.cs
- WorkflowMarkupSerializationManager.cs
- CacheAxisQuery.cs
- Drawing.cs
- SQLInt32.cs
- LocalFileSettingsProvider.cs
- Int32Converter.cs
- ProfileService.cs
- Helpers.cs
- MimeParameters.cs
- DrawTreeNodeEventArgs.cs
- MenuTracker.cs
- UserControlBuildProvider.cs
- ServicePointManager.cs
- OracleDataReader.cs
- ActivationWorker.cs
- AnnotationResource.cs
- EntityCollection.cs
- DataFormat.cs
- GcHandle.cs
- ServiceNameElement.cs
- StateElementCollection.cs
- SmtpMail.cs
- ObjectHandle.cs
- Point3DAnimationUsingKeyFrames.cs
- ThaiBuddhistCalendar.cs
- OrderByQueryOptionExpression.cs
- ExtenderProvidedPropertyAttribute.cs
- RtfNavigator.cs
- SupportsEventValidationAttribute.cs
- ListDataBindEventArgs.cs
- RelationshipFixer.cs
- Token.cs
- ServiceBuildProvider.cs
- Base64WriteStateInfo.cs
- MdImport.cs
- ArglessEventHandlerProxy.cs
- QueryContinueDragEventArgs.cs
- _OSSOCK.cs
- BitmapEffectGeneralTransform.cs
- TemplateKey.cs
- DesignerView.cs
- ProviderMetadataCachedInformation.cs
- CqlParserHelpers.cs
- BitmapEffectState.cs
- UniqueIdentifierService.cs
- PersonalizationProviderHelper.cs
- IIS7UserPrincipal.cs
- EntityUtil.cs
- SafeMILHandleMemoryPressure.cs
- CqlLexerHelpers.cs
- HttpModulesSection.cs
- OperandQuery.cs
- StringStorage.cs
- FileDialogCustomPlacesCollection.cs
- DSACryptoServiceProvider.cs
- ValidationHelpers.cs
- WebPartAuthorizationEventArgs.cs
- EntityParameterCollection.cs
- PerfCounters.cs
- ServiceSecurityAuditElement.cs
- MailDefinition.cs
- DataColumnSelectionConverter.cs
- XmlSchemaIdentityConstraint.cs
- FileRecordSequenceCompletedAsyncResult.cs
- NavigationExpr.cs
- HttpException.cs
- Win32.cs
- DtdParser.cs
- StyleXamlParser.cs
- ClosableStream.cs
- BindingExpressionUncommonField.cs
- TransformerConfigurationWizardBase.cs
- DataControlField.cs
- TagNameToTypeMapper.cs
- ManagedIStream.cs
- CompiledIdentityConstraint.cs
- BulletDecorator.cs
- XmlIlVisitor.cs
- UnaryNode.cs
- GregorianCalendar.cs
- HebrewNumber.cs