为一类划分枚举

时间:2019-06-26 14:19:22

标签: c# wpf enums

我在所有UserControl中创建了一个枚举,其中包含可用于此UC上显示的对象的操作。例如:

private enum ControlActions
  {
     New,
     Edit,
     Delete
  }

几乎每个用户控件中的动作都相同,因此我想创建一个全局枚举。但是问题是有些对象没有针对该对象的所有操作(有时只有一个,有时两个)。所以我的问题是,有没有一种方法可以创建一个gloabl枚举,但要对其进行定界?

例如: 在UserControl1中,操作“新建”和“编辑” 在UserControl2中,操作Delete 在UserControl3中,新建,编辑和删除操作

1 个答案:

答案 0 :(得分:-2)

您可能无法在枚举本身中解决此问题,但是您可以编写扩展方法来确定某个控件是否允许该操作。

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());