Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / System.Activities / Microsoft / VisualBasic / Activities / AssemblyNameEqualityComparer.cs / 1305376 / AssemblyNameEqualityComparer.cs
//------------------------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------------------------- namespace Microsoft.VisualBasic.Activities { using System; using System.Collections; using System.Collections.Generic; using System.Reflection; using System.Runtime; class AssemblyNameEqualityComparer : IEqualityComparer, IEqualityComparer{ public AssemblyNameEqualityComparer() { } public new bool Equals(object xparam, object yparam) { if (xparam == null && yparam == null) { return true; } return this.Equals(xparam as AssemblyName, yparam as AssemblyName); } public bool Equals(AssemblyName x, AssemblyName y) { // this expects non-null AssemblyName if (x == null || y == null) { return false; } if (Object.ReferenceEquals(x, y)) { return true; } if (x.Name != null && y.Name != null) { if (string.Compare(x.Name, y.Name, StringComparison.OrdinalIgnoreCase) != 0) { return false; } } else if (!(x.Name == null && y.Name == null)) { return false; } if (x.Version != null && y.Version != null) { if (x.Version != y.Version) { return false; } } else if (!(x.Version == null && y.Version == null)) { return false; } if (x.CultureInfo != null && y.CultureInfo != null) { if (!x.CultureInfo.Equals(y.CultureInfo)) { return false; } } else if (!(x.CultureInfo == null && y.CultureInfo == null)) { return false; } byte[] xArray = x.GetPublicKeyToken(); byte[] yArray = y.GetPublicKeyToken(); if (!IsSameKeyToken(xArray, yArray)) { return false; } return true; } public int GetHashCode(object objparam) { AssemblyName obj = objparam as AssemblyName; if (obj == null) { return 0; } return this.GetHashCode(obj); } public int GetHashCode(AssemblyName obj) { int hashcode = 0; if (obj.Name != null) { hashcode ^= obj.Name.GetHashCode(); } if (obj.Version != null) { hashcode ^= obj.Version.GetHashCode(); } if (obj.CultureInfo != null) { hashcode ^= obj.CultureInfo.GetHashCode(); } byte[] objArray = obj.GetPublicKeyToken(); if (objArray != null) { // distinguishing no PKToken from "PKToken = null" which is an array of length=0 hashcode ^= objArray.Length.GetHashCode() + 1; if (objArray.Length > 0) { hashcode ^= BitConverter.ToUInt64(objArray, 0).GetHashCode(); } } return hashcode; } public static bool IsSameKeyToken(byte[] reqKeyToken, byte[] curKeyToken) { bool isSame = false; if (reqKeyToken == null && curKeyToken == null) { // Both Key Tokens are not set, treat them as same. isSame = true; } else if (reqKeyToken != null && curKeyToken != null) { // Both KeyTokens are set. if (reqKeyToken.Length == curKeyToken.Length) { isSame = true; for (int i = 0; i < reqKeyToken.Length; i++) { if (reqKeyToken[i] != curKeyToken[i]) { isSame = false; break; } } } } return isSame; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SiteMapSection.cs
- HttpListenerContext.cs
- Decimal.cs
- LogLogRecordEnumerator.cs
- DecoderReplacementFallback.cs
- AttributeUsageAttribute.cs
- Ray3DHitTestResult.cs
- SplitterCancelEvent.cs
- BindingNavigator.cs
- BigInt.cs
- Shared.cs
- SecurityUtils.cs
- DataGridViewRowsAddedEventArgs.cs
- BrowserCapabilitiesCodeGenerator.cs
- RadioButtonBaseAdapter.cs
- DataGridViewDataErrorEventArgs.cs
- ReceiveCompletedEventArgs.cs
- WebBrowserNavigatingEventHandler.cs
- AppDomainShutdownMonitor.cs
- NotFiniteNumberException.cs
- SmtpClient.cs
- FontDialog.cs
- SinglePageViewer.cs
- CodeArgumentReferenceExpression.cs
- DelegatingConfigHost.cs
- FormViewDeletedEventArgs.cs
- ReferenceConverter.cs
- XXXInfos.cs
- ReadOnlyPermissionSet.cs
- PropertyItem.cs
- WebColorConverter.cs
- RoutedEvent.cs
- Page.cs
- XmlValidatingReader.cs
- XpsViewerException.cs
- TdsRecordBufferSetter.cs
- SimpleLine.cs
- ValidationErrorEventArgs.cs
- AccessedThroughPropertyAttribute.cs
- TextTreeRootTextBlock.cs
- StateMachineSubscriptionManager.cs
- ExceptionUtil.cs
- XXXInfos.cs
- SafeEventLogWriteHandle.cs
- FormViewRow.cs
- EntryIndex.cs
- DocumentCollection.cs
- JpegBitmapEncoder.cs
- UidManager.cs
- SqlServer2KCompatibilityAnnotation.cs
- UrlMappingsModule.cs
- CallbackValidator.cs
- FlowDocumentPaginator.cs
- WindowsContainer.cs
- CacheDict.cs
- ObjectHandle.cs
- ModelTypeConverter.cs
- ProfileGroupSettingsCollection.cs
- WebServiceData.cs
- SqlDataSourceStatusEventArgs.cs
- XmlEntity.cs
- ZipIOCentralDirectoryFileHeader.cs
- AppModelKnownContentFactory.cs
- TextFormatterImp.cs
- TransformerConfigurationWizardBase.cs
- InputMethodStateChangeEventArgs.cs
- XmlCustomFormatter.cs
- DataGridSortCommandEventArgs.cs
- NamespaceMapping.cs
- MessageBuilder.cs
- ExtendedPropertyDescriptor.cs
- TableCellCollection.cs
- DisposableCollectionWrapper.cs
- FormsAuthenticationCredentials.cs
- BindingNavigator.cs
- XmlMtomWriter.cs
- PathFigure.cs
- HtmlGenericControl.cs
- UInt32.cs
- LocalizeDesigner.cs
- View.cs
- XmlDataLoader.cs
- ResumeStoryboard.cs
- ScriptingJsonSerializationSection.cs
- CapabilitiesRule.cs
- UMPAttributes.cs
- SchemaTypeEmitter.cs
- CompilerInfo.cs
- _NegoStream.cs
- DefaultTextStoreTextComposition.cs
- ColorConvertedBitmapExtension.cs
- AutomationElementCollection.cs
- KeyTimeConverter.cs
- ValidatingPropertiesEventArgs.cs
- IntegerCollectionEditor.cs
- DocumentPaginator.cs
- PropertyRef.cs
- StringTraceRecord.cs
- DataTableCollection.cs
- TextTreeUndo.cs