/// <summary>
        /// <para>Transforms <paramref name="ringColors"/> into an array of ColorCode_DIN_IEC_62.</para>
        /// </summary>
        /// <param name="ringColors"></param>
        /// <param name="colorCodes"></param>
        /// <returns></returns>
        private static ColorCode_DIN_IEC_62[] GetColorCodesForRings(string[] ringColors, IReadOnlyList <ColorCode_DIN_IEC_62> colorCodes)
        {
            ColorCode_DIN_IEC_62[] colorCodesForRings = new ColorCode_DIN_IEC_62[ringColors.Count()];

            var propertyInfos = typeof(ColorCode_DIN_IEC_62).GetProperties().Where(p => p.CustomAttributes.Any());

            for (int i = 0; i < ringColors.Count(); i++)
            {
                string colorName = ringColors[i];
                if (!TryGetColorCode(colorName, colorCodes, out ColorCode_DIN_IEC_62 colorCode))
                {
                    throw new ArgumentOutOfRangeException(String.Format("Die Farbe {0} ist nach DIN IEC 62 kein gültiger Wert.", colorName));
                }

                int ringPosition = i + 1;
                var pInfo        = propertyInfos.FirstOrDefault(pi => pi.GetCustomAttribute <ResistorRingPositionAttribute>().Position == ringPosition);

                if (pInfo == null)
                {
                    throw new ArgumentNullException(String.Format("Es gibt keine Property mit der Rinposition {0}", ringPosition));
                }

                if (pInfo.GetValue(colorCode).Equals("not_allowed"))
                {
                    throw new ArgumentOutOfRangeException(String.Format("Der Farbcode {0} ist für den {1}. Ring nicht erlaubt", colorCode.Color, ringPosition));
                }

                colorCodesForRings[i] = colorCode;
            }

            return(colorCodesForRings);
        }
        /// <summary>
        /// <para>Tries to get ColorCode_DIN_IEC_62 for <paramref name="color"/>.</para>
        /// </summary>
        /// <param name="color"></param>
        /// <param name="colorCodes"></param>
        /// <param name="colorCode"></param>
        /// <returns>true if a ColorCode_DIN_IEC_62 is found, else false.</returns>
        private static bool TryGetColorCode(string color, IEnumerable <ColorCode_DIN_IEC_62> colorCodes, out ColorCode_DIN_IEC_62 colorCode)
        {
            colorCode = colorCodes.FirstOrDefault(cc => cc.Color.Equals(color));

            return(colorCode != null);
        }