Easier Enums
Here's a slightly easier way to work with flag enumerations.
Consider this simple enumeration:
/// <summary> /// Options enumeration used to specify behaviour when calling MakeHandledServiceCall() /// </summary> [Flags] public enum CallOptions { /// <summary> /// No special handling /// </summary> None = 0, /// <summary> /// Display validation messages to the user automatically /// </summary> ShowValidation = 1, /// <summary> /// Display exception messages to the user automatically /// </summary> ShowExceptions = 2 }
Normally, to check if a particular option has been supplied, you need to write a clumsy test:
if ((options & CallOptions.ShowValidation) == CallOptions.ShowValidation) { // Something }
Historically, this is what we've been stuck with - even in C# 2.0, because you can't constrain a generic method to work with enumerations.
However, with Extension methods in C# 3.0, we can write a helper like this:
/// <summary> /// Test to see if the specified value includes a requested option /// </summary> /// <param name="aValue">Value to test</param> /// <param name="aOption">Option to test for</param> /// <returns>True of Value includes Option; false otherwise.</returns> public static bool Includes(this CallOptions aValue, CallOptions aOption) { return (aValue & aOption) == aOption; }
Which makes the test much easier to read:
if (options.Includes(CallOptions.ShowValidation)) { // Something }
Hope you find this useful!
Recent comments
3 weeks 4 days ago
4 weeks 3 days ago
4 weeks 3 days ago
4 weeks 4 days ago
7 weeks 16 hours ago
7 weeks 3 days ago
7 weeks 3 days ago
10 weeks 1 day ago
11 weeks 3 days ago
11 weeks 4 days ago