Разграничение перечислений для одного класса - PullRequest
0 голосов
/ 26 июня 2019

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

private enum ControlActions
  {
     New,
     Edit,
     Delete
  }

Почти в каждом UserControl действия одинаковы, поэтому я хотел сделать глобальное перечисление.Но проблема в том, что есть некоторые UserControls, у которых нет всех этих действий для этого объекта (иногда только один, иногда два).Итак, мой вопрос, есть ли способ создать перечисление gloabl, но разделить его?

Например: в UserControl1 действия New и Edit In UserControl2 действие Delete In UserControl3 действия New, Edit и Delete

1 Ответ

0 голосов
/ 26 июня 2019

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

public enum ControlActions
{
    New,
    Edit,
    Delete
}

public static class ControlActionsExtender
{
    public static bool IsActionAllowed(this ControlActions controlAction, Type controlType)
    {
        switch (controlAction)
        {
            case ControlActions.New:
                return controlType == typeof(UserControlA) || controlType == typeof(UserControlB) || controlType == typeof(UserControlC);
            case ControlActions.Edit:
                return controlType == typeof(UserControlA);
            case ControlActions.Delete:
                return controlType == typeof(UserControlA) || controlType == typeof(UserControlC);
        }
        return false;
    }
}

Затем в вашем пользовательском элементе управления,Вы можете определить, разрешено ли действие, позвонив:

// See if we are allowed to create a new item from this control
ControlActions.New.IsAllowed(this.GetType());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...