123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Net.Http.Headers;
-
- namespace Logs_test.Areas.HelpPage
- {
- /// <summary>
- /// This is used to identify the place where the sample should be applied.
- /// </summary>
- public class HelpPageSampleKey
- {
- /// <summary>
- /// Creates a new <see cref="HelpPageSampleKey"/> based on media type and CLR type.
- /// </summary>
- /// <param name="mediaType">The media type.</param>
- /// <param name="type">The CLR type.</param>
- public HelpPageSampleKey(MediaTypeHeaderValue mediaType, Type type)
- {
- if (mediaType == null)
- {
- throw new ArgumentNullException("mediaType");
- }
- if (type == null)
- {
- throw new ArgumentNullException("type");
- }
- ControllerName = String.Empty;
- ActionName = String.Empty;
- ParameterNames = new HashSet<string>(StringComparer.OrdinalIgnoreCase);
- ParameterType = type;
- MediaType = mediaType;
- }
-
- /// <summary>
- /// Creates a new <see cref="HelpPageSampleKey"/> based on <see cref="SampleDirection"/>, controller name, action name and parameter names.
- /// </summary>
- /// <param name="sampleDirection">The <see cref="SampleDirection"/>.</param>
- /// <param name="controllerName">Name of the controller.</param>
- /// <param name="actionName">Name of the action.</param>
- /// <param name="parameterNames">The parameter names.</param>
- public HelpPageSampleKey(SampleDirection sampleDirection, string controllerName, string actionName, IEnumerable<string> parameterNames)
- {
- if (!Enum.IsDefined(typeof(SampleDirection), sampleDirection))
- {
- throw new InvalidEnumArgumentException("sampleDirection", (int)sampleDirection, typeof(SampleDirection));
- }
- if (controllerName == null)
- {
- throw new ArgumentNullException("controllerName");
- }
- if (actionName == null)
- {
- throw new ArgumentNullException("actionName");
- }
- if (parameterNames == null)
- {
- throw new ArgumentNullException("parameterNames");
- }
- ControllerName = controllerName;
- ActionName = actionName;
- ParameterNames = new HashSet<string>(parameterNames, StringComparer.OrdinalIgnoreCase);
- SampleDirection = sampleDirection;
- }
-
- /// <summary>
- /// Creates a new <see cref="HelpPageSampleKey"/> based on media type, <see cref="SampleDirection"/>, controller name, action name and parameter names.
- /// </summary>
- /// <param name="mediaType">The media type.</param>
- /// <param name="sampleDirection">The <see cref="SampleDirection"/>.</param>
- /// <param name="controllerName">Name of the controller.</param>
- /// <param name="actionName">Name of the action.</param>
- /// <param name="parameterNames">The parameter names.</param>
- public HelpPageSampleKey(MediaTypeHeaderValue mediaType, SampleDirection sampleDirection, string controllerName, string actionName, IEnumerable<string> parameterNames)
- {
- if (mediaType == null)
- {
- throw new ArgumentNullException("mediaType");
- }
- if (!Enum.IsDefined(typeof(SampleDirection), sampleDirection))
- {
- throw new InvalidEnumArgumentException("sampleDirection", (int)sampleDirection, typeof(SampleDirection));
- }
- if (controllerName == null)
- {
- throw new ArgumentNullException("controllerName");
- }
- if (actionName == null)
- {
- throw new ArgumentNullException("actionName");
- }
- if (parameterNames == null)
- {
- throw new ArgumentNullException("parameterNames");
- }
- ControllerName = controllerName;
- ActionName = actionName;
- MediaType = mediaType;
- ParameterNames = new HashSet<string>(parameterNames, StringComparer.OrdinalIgnoreCase);
- SampleDirection = sampleDirection;
- }
-
- /// <summary>
- /// Gets the name of the controller.
- /// </summary>
- /// <value>
- /// The name of the controller.
- /// </value>
- public string ControllerName { get; private set; }
-
- /// <summary>
- /// Gets the name of the action.
- /// </summary>
- /// <value>
- /// The name of the action.
- /// </value>
- public string ActionName { get; private set; }
-
- /// <summary>
- /// Gets the media type.
- /// </summary>
- /// <value>
- /// The media type.
- /// </value>
- public MediaTypeHeaderValue MediaType { get; private set; }
-
- /// <summary>
- /// Gets the parameter names.
- /// </summary>
- public HashSet<string> ParameterNames { get; private set; }
-
- public Type ParameterType { get; private set; }
-
- /// <summary>
- /// Gets the <see cref="SampleDirection"/>.
- /// </summary>
- public SampleDirection? SampleDirection { get; private set; }
-
- public override bool Equals(object obj)
- {
- HelpPageSampleKey otherKey = obj as HelpPageSampleKey;
- if (otherKey == null)
- {
- return false;
- }
-
- return String.Equals(ControllerName, otherKey.ControllerName, StringComparison.OrdinalIgnoreCase) &&
- String.Equals(ActionName, otherKey.ActionName, StringComparison.OrdinalIgnoreCase) &&
- (MediaType == otherKey.MediaType || (MediaType != null && MediaType.Equals(otherKey.MediaType))) &&
- ParameterType == otherKey.ParameterType &&
- SampleDirection == otherKey.SampleDirection &&
- ParameterNames.SetEquals(otherKey.ParameterNames);
- }
-
- public override int GetHashCode()
- {
- int hashCode = ControllerName.ToUpperInvariant().GetHashCode() ^ ActionName.ToUpperInvariant().GetHashCode();
- if (MediaType != null)
- {
- hashCode ^= MediaType.GetHashCode();
- }
- if (SampleDirection != null)
- {
- hashCode ^= SampleDirection.GetHashCode();
- }
- if (ParameterType != null)
- {
- hashCode ^= ParameterType.GetHashCode();
- }
- foreach (string parameterName in ParameterNames)
- {
- hashCode ^= parameterName.ToUpperInvariant().GetHashCode();
- }
-
- return hashCode;
- }
- }
- }
|