Skip to content

Commit edc5b7b

Browse files
committed
Use explicit type checking for Enum.ToObject.
1 parent d06e93c commit edc5b7b

File tree

1 file changed

+13
-6
lines changed

1 file changed

+13
-6
lines changed

Microsoft.Toolkit.Uwp.UI/Triggers/IsEqualStateTrigger.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,13 +94,20 @@ private static bool ConvertTypeEquals(object value1, object value2)
9494
private static object ConvertToEnum(Type enumType, object value)
9595
{
9696
// value cannot be the same type of enum now
97-
return value switch
97+
if (value is string str)
9898
{
99-
string str when Enum.TryParse(enumType, str, out var e) => e, // string is most common for enum comparison
100-
_ when Type.GetTypeCode(enumType) == Convert.GetTypeCode(value) // previous implementation uses Enum.IsDefeind which only allows the same type code
101-
=> Enum.ToObject(enumType, value),
102-
_ => null
103-
};
99+
return Enum.TryParse(enumType, str, out var e) ? e : null;
100+
}
101+
102+
if (value is int || value is uint
103+
|| value is byte || value is sbyte
104+
|| value is long || value is ulong
105+
|| value is short || value is ushort)
106+
{
107+
return Enum.ToObject(enumType, value);
108+
}
109+
110+
return null;
104111
}
105112
}
106113
}

0 commit comments

Comments
 (0)