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");
        }
Esempio n. 2
0
 /// <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);
 }