public static string ApiContractTypeName(ApiContractType apiContractType) => ApiContractTypeDictionary.ContainsKey(apiContractType) ? ApiContractTypeDictionary[apiContractType] : "UNKNOWN";
private static bool IsPowerOfTwo(ApiContractType type) => type > 0 && ((type & type - 1) == 0);
public static List <ApiContractType> SplitComplexContract(ApiContractType contractType) { InitializeIfNotYet(); return(PrimitiveContractTypes.Where(ct => contractType.HasFlag(ct)).ToList()); }
/// <summary> /// Constructs ApiErrorView with <see cref="ApiErrorReason.ViewPropertyContractViolation"/> reason. /// Means one or several view;s properties have invalid values. /// </summary> /// <param name="view">View that violated contract</param> /// <param name="propertyName">Malformed property name</param> /// <param name="violatedContract">Violated contract type (simple property contract)</param> /// <returns>Constructed ApiErrorView</returns> public static ApiErrorView ViewPropertyContractViolation(object view, string propertyName, ApiContractType violatedContract) => new ApiErrorView { Reason = ApiErrorReason.ViewPropertyContractViolation, Context = propertyName, ViewType = GetTypeName(view.GetType()), ErrorMessage = EnumHelper.ApiContractTypeName(violatedContract), ViolatedContract = violatedContract };
/// <summary> /// Creates new instance of <see cref="ApiContractAttribute"/> /// </summary> /// <param name="type">Used contracts</param> /// <param name="comment">Simple comment. Do not use if <see cref="Type"/> is explicit enough</param> public ApiContractAttribute(ApiContractType type, string comment = null) { Type = type; Comment = comment; }
/// <summary> /// Method used to describe single API contract bullet /// </summary> /// <param name="contractType">Contract type</param> /// <returns>Description string</returns> /// <remarks>Should not throw</remarks> protected virtual string GetApiContractPartDescription(ApiContractType contractType) => EnumHelper.ApiContractTypeName(contractType);