我在所有UserControl中创建了一个枚举,其中包含可用于此UC上显示的对象的操作。例如:
private enum ControlActions
{
New,
Edit,
Delete
}
几乎每个用户控件中的动作都相同,因此我想创建一个全局枚举。但是问题是有些对象没有针对该对象的所有操作(有时只有一个,有时两个)。所以我的问题是,有没有一种方法可以创建一个gloabl枚举,但要对其进行定界?
例如: 在UserControl1中,操作“新建”和“编辑” 在UserControl2中,操作Delete 在UserControl3中,新建,编辑和删除操作
答案 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());