Ejemplo n.º 1
0
        public override object Deserialize(XElement elem, XNamespace overridingNamespace)
        {
            var elemR = elem.Element(this.GetXName("R", overridingNamespace));

            if (elemR == null)
            {
                var colorName   = elem.Value;
                var colorByName = ReflectionUtils.InvokeStaticMethod(Type, "FromName", colorName);
                return(colorByName);
            }

            int a = 255, r, g = 0, b = 0;

            var elemA = elem.Element(this.GetXName("A", overridingNamespace));

            if (elemA != null && !int.TryParse(elemA.Value, out a))
            {
                a = 0;
            }

            if (!int.TryParse(elemR.Value, out r))
            {
                r = 0;
            }

            var elemG = elem.Element(this.GetXName("G", overridingNamespace));

            if (elemG != null && !int.TryParse(elemG.Value, out g))
            {
                g = 0;
            }

            var elemB = elem.Element(this.GetXName("B", overridingNamespace));

            if (elemB != null && !int.TryParse(elemB.Value, out b))
            {
                b = 0;
            }

            var result = ReflectionUtils.InvokeStaticMethod(Type, "FromArgb", a, r, g, b);

            return(result);
        }