Is there a way to tell which exact enum I'm working with at run time?

I have two enums and a generic method. The generic type T could be either one of the enums.

    public enum myEnumA
    {
        a,
        b
    }

    public enum myEnumB
    {
        c,
        d
    }

    public void myMethod<T>()
    {
        if (typeof(T) is myEnumA)
        {
            //do something
        } 
        else if (typeof (T) is myEnumB)
        {
            //do something else
        }
    }

The compiler tells me "the given expression is never of the provided type" regarding the if check. Is there a way to tell which exact enum it is at run time?

Jon Skeet
people
quotationmark

You want:

if (typeof(T) == typeof(MyEnumA))

to compare the types. The is operator is for testing whether a value is of a particular type.

Note that having to test for particular types within a generic method suggests that it might not really be very generic after all - consider using overloads or just entirely separate methods instead.

people

See more on this question at Stackoverflow