private static StatusCode GetStatusCode(string statusCodeString) { string[] statusCodes = statusCodeString.Split(",".ToCharArray()); string code; int aggregateBitCounts = 0; aggregateBitCounts = statusCodes.Length - 1; code = statusCodes[statusCodes.Length - 1].Trim(); FieldInfo[] fieldInfo = typeof(StatusCodes).GetFields(BindingFlags.Public | BindingFlags.Static); for (int i = 0; i < fieldInfo.Length; i++) { if (String.Compare(fieldInfo[i].Name, code, true) == 0) { uint actualCode = (uint)fieldInfo[i].GetValue(null); StatusCode status = actualCode; for (int ii = 0; ii < aggregateBitCounts; ii++) { AggregateBits bitCode = (AggregateBits)Enum.Parse(typeof(AggregateBits), statusCodes[ii]); status.AggregateBits |= bitCode; } return(status); } } throw new ArgumentException("Invalid StatusCodeString"); }
/// <summary> /// Returns a copy of the status code with the aggregate bits set. /// </summary> /// <param name="bits">The bits to set.</param> /// <returns>The status code with the aggregate bits set to the specified values.</returns> public StatusCode SetAggregateBits(AggregateBits bits) { this.AggregateBits = bits; return(this); }