You've already forked linux-packaging-mono
							
							
		
			
				
	
	
		
			101 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| //------------------------------------------------------------
 | |
| // Copyright (c) Microsoft Corporation.  All rights reserved.
 | |
| //------------------------------------------------------------
 | |
| 
 | |
| using System.Collections.Generic;
 | |
| 
 | |
| namespace System.IdentityModel.Tokens
 | |
| {
 | |
|     /// <summary>
 | |
|     /// Comparison class supporting multi-part keys for a dicitionary
 | |
|     /// </summary>
 | |
|     internal class SamlAttributeKeyComparer : IEqualityComparer<SamlAttributeKeyComparer.AttributeKey>
 | |
|     {
 | |
|         public class AttributeKey
 | |
|         {
 | |
|             string _friendlyName;
 | |
|             int _hashCode;
 | |
|             string _name;
 | |
|             string _nameFormat;
 | |
|             string _namespace;
 | |
|             string _valueType;
 | |
|             string _originalIssuer;
 | |
| 
 | |
|             internal string FriendlyName { get { return _friendlyName; } }
 | |
|             internal string Name { get { return _name; } }
 | |
|             internal string NameFormat { get { return _nameFormat; } }
 | |
|             internal string Namespace { get { return _namespace; } }
 | |
|             internal string ValueType { get { return _valueType; } }
 | |
|             internal string OriginalIssuer { get { return _originalIssuer; } }
 | |
| 
 | |
|             public AttributeKey( SamlAttribute attribute )
 | |
|             {
 | |
|                 if ( attribute == null )
 | |
|                 {
 | |
|                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull( "attribute" );
 | |
|                 }
 | |
| 
 | |
|                 _friendlyName = String.Empty;
 | |
|                 _name = attribute.Name;
 | |
|                 _nameFormat = String.Empty;
 | |
|                 _namespace = attribute.Namespace ?? String.Empty;
 | |
|                 _valueType = attribute.AttributeValueXsiType ?? String.Empty;
 | |
|                 _originalIssuer = attribute.OriginalIssuer ?? String.Empty;
 | |
| 
 | |
|                 ComputeHashCode();
 | |
|             }
 | |
| 
 | |
|             public AttributeKey( Saml2Attribute attribute )
 | |
|             {
 | |
|                 if ( attribute == null )
 | |
|                 {
 | |
|                     throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull( "attribute" );
 | |
|                 }
 | |
| 
 | |
|                 _friendlyName = attribute.FriendlyName ?? String.Empty;
 | |
|                 _name = attribute.Name;
 | |
|                 _nameFormat = attribute.NameFormat == null ? String.Empty : attribute.NameFormat.AbsoluteUri;
 | |
|                 _namespace = String.Empty;
 | |
|                 _valueType = attribute.AttributeValueXsiType ?? String.Empty;
 | |
|                 _originalIssuer = attribute.OriginalIssuer ?? String.Empty;
 | |
| 
 | |
|                 ComputeHashCode();
 | |
|             }
 | |
| 
 | |
|             public override int GetHashCode()
 | |
|             {
 | |
|                 return _hashCode;
 | |
|             }
 | |
| 
 | |
|             void ComputeHashCode()
 | |
|             {
 | |
|                 _hashCode = _name.GetHashCode();
 | |
|                 _hashCode ^= _friendlyName.GetHashCode();
 | |
|                 _hashCode ^= _nameFormat.GetHashCode();
 | |
|                 _hashCode ^= _namespace.GetHashCode();
 | |
|                 _hashCode ^= _valueType.GetHashCode();
 | |
|                 _hashCode ^= _originalIssuer.GetHashCode();
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         #region IEqualityComparer<AttributeKey> Members
 | |
| 
 | |
|         public bool Equals( AttributeKey x, AttributeKey y )
 | |
|         {
 | |
|             return x.Name.Equals( y.Name, StringComparison.Ordinal )
 | |
|                 && x.FriendlyName.Equals( y.FriendlyName, StringComparison.Ordinal )
 | |
|                 && x.ValueType.Equals( y.ValueType, StringComparison.Ordinal )
 | |
|                 && x.OriginalIssuer.Equals( y.OriginalIssuer, StringComparison.Ordinal )
 | |
|                 && x.NameFormat.Equals( y.NameFormat, StringComparison.Ordinal )
 | |
|                 && x.Namespace.Equals( y.Namespace, StringComparison.Ordinal );
 | |
|         }
 | |
| 
 | |
|         public int GetHashCode( AttributeKey obj )
 | |
|         {
 | |
|             return obj.GetHashCode();
 | |
|         }
 | |
| 
 | |
|         #endregion
 | |
|     };
 | |
| }
 |