12 [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property)]
15 public int[] ShowValues {
get;
private set; }
20 if (!enumValue.GetType().IsEnum())
21 throw new Exception(
"Value must be of type Enum");
23 ShowValues =
new int[] { Convert.ToInt32(enumValue) };
24 MemberName = enumVariableName;
25 ShowIfConditionMet = showIfConditionMet;
30 if (!enumValue1.GetType().IsEnum() || !enumValue2.GetType().IsEnum())
31 throw new Exception(
"Values must be of type Enum");
33 ShowValues =
new int[] { Convert.ToInt32(enumValue1), Convert.ToInt32(enumValue2) };
34 MemberName = enumVariableName;
35 ShowIfConditionMet = showIfConditionMet;
38 public ShowIfEnumValueAttribute(
string enumVariableName,
object enumValue1,
object enumValue2,
object enumValue3,
bool showIfConditionMet =
true)
40 if (!enumValue1.GetType().IsEnum() || !enumValue2.GetType().IsEnum() || !enumValue3.GetType().IsEnum())
41 throw new Exception(
"Values must be of type Enum");
43 ShowValues =
new int[] { Convert.ToInt32(enumValue1), Convert.ToInt32(enumValue2), Convert.ToInt32(enumValue3) };
44 MemberName = enumVariableName;
45 ShowIfConditionMet = showIfConditionMet;
48 public ShowIfEnumValueAttribute(
string enumVariableName,
object enumValue1,
object enumValue2,
object enumValue3,
object enumValue4,
bool showIfConditionMet =
true)
50 if (!enumValue1.GetType().IsEnum() || !enumValue2.GetType().IsEnum() || !enumValue3.GetType().IsEnum() || !enumValue4.GetType().IsEnum())
51 throw new Exception(
"Values must be of type Enum");
53 ShowValues =
new int[] { Convert.ToInt32(enumValue1), Convert.ToInt32(enumValue2), Convert.ToInt32(enumValue3), Convert.ToInt32(enumValue4) };
54 MemberName = enumVariableName;
55 ShowIfConditionMet = showIfConditionMet;
59 public override bool ShouldShow(
object target)
61 bool conditionMet =
false;
62 int memberValue = Convert.ToInt32(GetMemberValue(target, MemberName));
63 for (
int i = 0; i < ShowValues.Length; i++)
65 if (ShowValues[i] == memberValue)
71 return ShowIfConditionMet ? conditionMet : !conditionMet;
75 private static object GetAsUnderlyingType(Enum enval)
77 Type entype = enval.GetType();
78 Type undertype = Enum.GetUnderlyingType(entype);
79 return Convert.ChangeType(enval, undertype);