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
- FilteredDataSetHelper.cs
- IItemContainerGenerator.cs
- ContainerTracking.cs
- DateTimePicker.cs
- HashSet.cs
- EmbeddedMailObjectsCollection.cs
- SubpageParaClient.cs
- Currency.cs
- Material.cs
- OutOfMemoryException.cs
- SwitchLevelAttribute.cs
- SeverityFilter.cs
- StringStorage.cs
- QuadraticBezierSegment.cs
- ColumnMapVisitor.cs
- LoginUtil.cs
- Verify.cs
- IsolatedStoragePermission.cs
- MultiAsyncResult.cs
- ConditionalWeakTable.cs
- WindowsSysHeader.cs
- OperatorExpressions.cs
- Matrix.cs
- PublisherIdentityPermission.cs
- VisualTreeHelper.cs
- DisposableCollectionWrapper.cs
- FixedSOMGroup.cs
- HtmlTableRowCollection.cs
- Point4D.cs
- ObjectParameter.cs
- WebRequestModuleElementCollection.cs
- ExtendedTransformFactory.cs
- HtmlListAdapter.cs
- FormatVersion.cs
- DataGridViewBindingCompleteEventArgs.cs
- FactoryRecord.cs
- Transform.cs
- HttpBufferlessInputStream.cs
- HScrollBar.cs
- XamlHostingSectionGroup.cs
- ChtmlTextWriter.cs
- wgx_render.cs
- HexParser.cs
- ReliableRequestSessionChannel.cs
- AssemblyHash.cs
- TriState.cs
- CompilationUtil.cs
- ConnectionProviderAttribute.cs
- Tokenizer.cs
- IIS7WorkerRequest.cs
- SafeHandles.cs
- TextBoxView.cs
- HoistedLocals.cs
- StringUtil.cs
- GenerateDerivedKeyRequest.cs
- Point3DAnimation.cs
- QueryNode.cs
- GridItemCollection.cs
- SafeRightsManagementSessionHandle.cs
- HtmlImage.cs
- SoapSchemaMember.cs
- PersistenceMetadataNamespace.cs
- ButtonChrome.cs
- X509CertificateInitiatorClientCredential.cs
- ObjectHelper.cs
- CategoryAttribute.cs
- AmbientLight.cs
- __ConsoleStream.cs
- DocumentXmlWriter.cs
- MergePropertyDescriptor.cs
- BitmapFrameEncode.cs
- localization.cs
- UrlRoutingHandler.cs
- LabelTarget.cs
- UseAttributeSetsAction.cs
- SecurityKeyIdentifier.cs
- DBCSCodePageEncoding.cs
- MetadataArtifactLoaderComposite.cs
- PrimitiveXmlSerializers.cs
- _NtlmClient.cs
- TreeViewAutomationPeer.cs
- ComponentEditorForm.cs
- metadatamappinghashervisitor.cs
- DetailsViewUpdatedEventArgs.cs
- ValidatorCompatibilityHelper.cs
- AssociationEndMember.cs
- TextPointerBase.cs
- DesignerOptionService.cs
- MyContact.cs
- SmiMetaData.cs
- TrackingCondition.cs
- IIS7WorkerRequest.cs
- ExtendedPropertyDescriptor.cs
- XslException.cs
- HtmlProps.cs
- WorkflowMessageEventArgs.cs
- WebPartDisplayModeCancelEventArgs.cs
- FixedSOMFixedBlock.cs
- Invariant.cs
- CacheSection.cs