public override int GetHashCode() { var providerGroupRoot = ProviderGroupRoot == null ? "(GroupIsNull)" : ProviderGroupRoot.ToString(); var providerId = ProviderId ?? "(ProviderIdNull)"; return((Value.ToString() + providerId + providerGroupRoot).GetHashCode()); }
public string ToString(HiveIdFormatStyle style) { switch (style) { default: case HiveIdFormatStyle.AsUri: return(ToUri().ToString()); case HiveIdFormatStyle.UriSafe: var valueType = Value.Type.ToString().ToLower(); var value = HiveEntityUriEncode(Value.ToString()); var valueTypeForOutput = ProviderGroupRoot == null && string.IsNullOrEmpty(ProviderId) ? valueType : FormatValue(valueType); var outputBuilder = new StringBuilder(); if (ProviderGroupRoot != null) { // If it's just a root, don't trim it var groupRoot = ProviderGroupRoot.ToString(); if (groupRoot.EndsWith("/") && !groupRoot.EndsWith("://") && !groupRoot.EndsWith(":///")) { groupRoot = groupRoot.TrimEnd('/'); } outputBuilder.Append(HiveEntityUriEncode(groupRoot)); outputBuilder.Append(UriSafeDelimiter); } if (!string.IsNullOrEmpty(ProviderId)) { outputBuilder.Append(FormatForUriSafePart(FormatProviderId(ProviderId))); outputBuilder.Append(UriSafeDelimiter); } outputBuilder.Append(FormatForUriSafePart(valueTypeForOutput)); outputBuilder.Append(UriSafeDelimiter); outputBuilder.Append(FormatForUriSafePart(value)); return(outputBuilder.ToString()); } }