Предотвращение выбора подтипа в коде представления - PullRequest
0 голосов
/ 01 февраля 2010

У меня есть некоторый код, в котором модель содержит несколько классов, таких как (псевдокод vb.net, но это может быть любой язык OO):

Enum AttributeType
    Boolean
    Date
    String
End Enum

MustInherit Class Attibute
    Must Override Function Type As AttributeType
End Class

Class BooleanAttribute: Attribute
    Function Type As AttributeType
        Return AttributeType.Boolean
    End Function
End Class

И представление содержит некоторый код, такой как:

Select Case AttributeType
    Case Boolean
        //Display checkbox control
    Case Date
        //Display date picker control
    Case String
        //Display textbox control
End Select

Мне не очень нравится код в представлении, по понятным причинам (что происходит, когда я получаю новый тип атрибута и т. д.). Мой вопрос, как следует Я заменил это?

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

Я мог бы переместить селектор на фабрику, но это, кажется, просто скрывает проблема.

Кто-нибудь может посоветовать лучший подход?

1 Ответ

0 голосов
/ 09 февраля 2010

Если это единственный оператор Case, я бы просто оставил его как есть.

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

Вы также можете сделать a для каждого типа атрибутов, это может уменьшить объем работы, требуемой при добавлении новых типов атрибутов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...