Оптимизация большого оператора switch

У меня есть большой оператор switch, в котором я создаю UIElements на основе входного значения из XElement:

public static UIElement CreateElement(XElement element) {
            var name = element.Attribute("Name").Value;
            var text = element.Attribute("Value").Value;
            var width = Convert.ToDouble(element.Attribute("Width").Value);
            var height = Convert.ToDouble(element.Attribute("Height").Value);
            //...
            switch (element.Attribute("Type").Value) {
                case "System.Windows.Forms.Label":
                    return new System.Windows.Controls.Label() {
                        Name = name,
                        Content = text,
                        Width = width,
                        Height = height
                    };
                case "System.Windows.Forms.Button":
                    return new System.Windows.Controls.Button() {
                        Name = name,
                        Content = text,
                        Width = width,
                        Height = height
                    };
                    //...
                default:
                    return null;
            }
        }

Я создаю много такие элементы управления, как это, и, как вы можете видеть, происходит слишком много повторений.

Есть ли способ избежать этого повторения? Заранее спасибо за идеи.

5
задан Vale 23 May 2011 в 08:32
поделиться