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
- SmtpClient.cs
- ScrollEventArgs.cs
- KeyedHashAlgorithm.cs
- Nullable.cs
- XmlILTrace.cs
- SmiConnection.cs
- StringAnimationBase.cs
- DesignerView.xaml.cs
- ValidatorCollection.cs
- PrintingPermission.cs
- TraceUtils.cs
- ContainerParaClient.cs
- CroppedBitmap.cs
- TextElementAutomationPeer.cs
- WindowsMenu.cs
- ScrollPattern.cs
- SQLMembershipProvider.cs
- UpDownEvent.cs
- Mappings.cs
- Action.cs
- PromptEventArgs.cs
- cookieexception.cs
- DataKey.cs
- StaticExtensionConverter.cs
- FloatSumAggregationOperator.cs
- DuplicateWaitObjectException.cs
- PathSegment.cs
- XmlWrappingWriter.cs
- DirectoryObjectSecurity.cs
- StaticFileHandler.cs
- QuotaThrottle.cs
- ResourcePermissionBase.cs
- DrawListViewColumnHeaderEventArgs.cs
- DocumentReference.cs
- HtmlEmptyTagControlBuilder.cs
- OperationAbortedException.cs
- XmlQualifiedNameTest.cs
- HttpWebResponse.cs
- XmlSchemaGroup.cs
- EmptyStringExpandableObjectConverter.cs
- EntityContainer.cs
- SafeCancelMibChangeNotify.cs
- HtmlUtf8RawTextWriter.cs
- OperationInfo.cs
- BevelBitmapEffect.cs
- CodeTypeParameterCollection.cs
- NonBatchDirectoryCompiler.cs
- GrammarBuilderPhrase.cs
- VectorCollectionConverter.cs
- DesignerAutoFormatCollection.cs
- RolePrincipal.cs
- CriticalExceptions.cs
- TransportChannelFactory.cs
- LocationSectionRecord.cs
- AtomMaterializer.cs
- ContextMenu.cs
- WorkflowRuntimeServiceElement.cs
- ArrayMergeHelper.cs
- Odbc32.cs
- Publisher.cs
- DesignerContextDescriptor.cs
- RoutedEventConverter.cs
- MemberMaps.cs
- StringPropertyBuilder.cs
- FixedHyperLink.cs
- CodeNamespaceImportCollection.cs
- CultureSpecificCharacterBufferRange.cs
- SrgsRuleRef.cs
- TrackingProfileCache.cs
- TableCell.cs
- Baml6Assembly.cs
- IfAction.cs
- ErasingStroke.cs
- PersistChildrenAttribute.cs
- StateDesigner.CommentLayoutGlyph.cs
- FileLoadException.cs
- HttpListener.cs
- DiffuseMaterial.cs
- EntityAdapter.cs
- XmlDataContract.cs
- RegionData.cs
- FormatConvertedBitmap.cs
- ClonableStack.cs
- XmlEnumAttribute.cs
- JavaScriptObjectDeserializer.cs
- OverflowException.cs
- StringWriter.cs
- ScrollEvent.cs
- PropertyCollection.cs
- JobCollate.cs
- BitmapEffectDrawingContent.cs
- Crc32Helper.cs
- ProxyWebPartManager.cs
- ParseElement.cs
- TransactionManager.cs
- MSG.cs
- PasswordRecovery.cs
- InputBinder.cs
- TypeGeneratedEventArgs.cs
- DrawingImage.cs