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
- ExtenderHelpers.cs
- DataGrid.cs
- IisTraceWebEventProvider.cs
- SubMenuStyle.cs
- PropertyTabAttribute.cs
- FixedMaxHeap.cs
- RequestUriProcessor.cs
- CacheDependency.cs
- ExpressionBuilder.cs
- NGCPageContentCollectionSerializerAsync.cs
- OneWayBindingElement.cs
- LinqDataSource.cs
- XmlCharCheckingReader.cs
- SoapEnumAttribute.cs
- DataGridViewCellParsingEventArgs.cs
- ScriptRef.cs
- QilTypeChecker.cs
- DocumentOrderQuery.cs
- PackageProperties.cs
- PermissionRequestEvidence.cs
- Partitioner.cs
- PathTooLongException.cs
- CapabilitiesSection.cs
- WebMessageBodyStyleHelper.cs
- TableAdapterManagerMethodGenerator.cs
- EditorServiceContext.cs
- AttachInfo.cs
- XmlDataLoader.cs
- ReverseInheritProperty.cs
- TextPointerBase.cs
- ExtractorMetadata.cs
- TableStyle.cs
- TextDecorationUnitValidation.cs
- WebPartDisplayModeCancelEventArgs.cs
- ConnectionPoolManager.cs
- CompiledRegexRunner.cs
- WSTransactionSection.cs
- CustomAttributeFormatException.cs
- InteropAutomationProvider.cs
- QilIterator.cs
- WebException.cs
- OleDbReferenceCollection.cs
- XMLSyntaxException.cs
- TextElement.cs
- MultiBindingExpression.cs
- DataRecordInfo.cs
- BindingContext.cs
- KoreanCalendar.cs
- SoapExtensionImporter.cs
- ToggleButtonAutomationPeer.cs
- TraceSection.cs
- MappingItemCollection.cs
- Panel.cs
- IIS7WorkerRequest.cs
- ParallelEnumerable.cs
- UriScheme.cs
- SymmetricKey.cs
- RuleInfoComparer.cs
- InfoCardProofToken.cs
- StylusPlugInCollection.cs
- DataBinding.cs
- HandlerMappingMemo.cs
- HttpDebugHandler.cs
- Soap.cs
- HtmlTableCell.cs
- ElementHostPropertyMap.cs
- WorkflowInspectionServices.cs
- HierarchicalDataSourceControl.cs
- StatusBar.cs
- QilReference.cs
- TextRunCacheImp.cs
- SizeConverter.cs
- WebServiceEnumData.cs
- X509CertificateValidator.cs
- RawAppCommandInputReport.cs
- Quad.cs
- AssociatedControlConverter.cs
- DetailsViewInsertedEventArgs.cs
- HandlerWithFactory.cs
- LoginNameDesigner.cs
- OleDbConnectionPoolGroupProviderInfo.cs
- RSAOAEPKeyExchangeFormatter.cs
- FormatConvertedBitmap.cs
- InvalidOperationException.cs
- PolicyDesigner.cs
- TransactionContextValidator.cs
- XmlCompatibilityReader.cs
- Transform.cs
- ServiceProviders.cs
- FamilyMapCollection.cs
- IntSecurity.cs
- DiagnosticTrace.cs
- LocalizedNameDescriptionPair.cs
- _ListenerRequestStream.cs
- PassportIdentity.cs
- ContentValidator.cs
- DesignerOptionService.cs
- CatalogZone.cs
- CFGGrammar.cs
- typedescriptorpermission.cs