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
- FontStyle.cs
- NamespaceCollection.cs
- GPPOINT.cs
- ResourceDisplayNameAttribute.cs
- CodeIndexerExpression.cs
- FilterException.cs
- WebServiceClientProxyGenerator.cs
- Win32.cs
- FixedSOMTable.cs
- InternalPermissions.cs
- TrackingProfile.cs
- BinaryObjectInfo.cs
- ClientRuntimeConfig.cs
- DataSourceXmlAttributeAttribute.cs
- Hash.cs
- _SSPISessionCache.cs
- PropertyChangingEventArgs.cs
- ElementMarkupObject.cs
- SafeFileMapViewHandle.cs
- SqlProcedureAttribute.cs
- validation.cs
- OdbcConnectionFactory.cs
- ProfileSection.cs
- PagesSection.cs
- MgmtConfigurationRecord.cs
- AttributeEmitter.cs
- DataGridTextBoxColumn.cs
- VirtualDirectoryMapping.cs
- ToolBarPanel.cs
- CheckBoxAutomationPeer.cs
- Size.cs
- EdmItemError.cs
- TabControlDesigner.cs
- StorageAssociationTypeMapping.cs
- ToolStripProfessionalLowResolutionRenderer.cs
- NonParentingControl.cs
- CollectionChangeEventArgs.cs
- ComboBoxDesigner.cs
- TraceContextRecord.cs
- SamlAuthorizationDecisionStatement.cs
- DataExpression.cs
- DateTimeUtil.cs
- ComponentEditorPage.cs
- AccessibleObject.cs
- EditingScopeUndoUnit.cs
- DnsPermission.cs
- OutputCacheModule.cs
- APCustomTypeDescriptor.cs
- ColumnMapCopier.cs
- ColorKeyFrameCollection.cs
- DataKeyCollection.cs
- DescendentsWalkerBase.cs
- LifetimeServices.cs
- AddInControllerImpl.cs
- QueryOperatorEnumerator.cs
- UInt16.cs
- Oid.cs
- AnyAllSearchOperator.cs
- RSAPKCS1SignatureFormatter.cs
- QuestionEventArgs.cs
- XmlUnspecifiedAttribute.cs
- EventHandlersStore.cs
- SqlClientWrapperSmiStream.cs
- ViewCellRelation.cs
- XmlSchemaSimpleContentRestriction.cs
- odbcmetadatafactory.cs
- CapabilitiesSection.cs
- Typeface.cs
- XmlCDATASection.cs
- LoaderAllocator.cs
- QueryMatcher.cs
- Int32Rect.cs
- WmlTextViewAdapter.cs
- ShaderEffect.cs
- WebAdminConfigurationHelper.cs
- SyndicationSerializer.cs
- TextEndOfParagraph.cs
- ElementMarkupObject.cs
- ClientConfigurationSystem.cs
- CounterSampleCalculator.cs
- Dispatcher.cs
- safelink.cs
- PeerCollaborationPermission.cs
- MetaTable.cs
- LastQueryOperator.cs
- TypeBuilder.cs
- SqlUserDefinedTypeAttribute.cs
- PointAnimationClockResource.cs
- SID.cs
- CustomErrorsSection.cs
- SequentialWorkflowHeaderFooter.cs
- EFDataModelProvider.cs
- DuplicateDetector.cs
- WebServiceEnumData.cs
- TrackPointCollection.cs
- DaylightTime.cs
- ScriptManager.cs
- Converter.cs
- HttpRawResponse.cs
- DebugViewWriter.cs