In building a project I'm converting to CoreCLR, I ran across this error:
C:\Users\Benjamin\Projects\MiniProfiler\StackExchange.Profiling\SqlTiming.cs(136,25): error CS1061: 'Type' does not contain a definition for 'IsEnum' and no extension method 'IsEnum' accepting a first argument of type 'Type' could be found (are you missing a using directive or an assembly reference?)
What's odd to me about this is that everything I can find online indicates that Type
should be available, and the IsEnum
property should be available. Fowler's reverse package search finds Type
in the System.Runtime
package, and I have System.Runtime 4.0.20-*
as a dependency in my project.json
in the dnxcore50
framework section.
However, the compiler error happens, and dotPeek also says there is no Type
type in the System.Runtime
package. What have I missed?
@aggieben, you probably want .GetTypeInfo().IsEnum (GetTypeInfo is an extension method from the System.Reflection namespace). A bunch of Type's surface area was moved to TypeInfo, including IsEnum I believe. Regarding dotPeek, I've not tried it, but if I had to guess it's not paying attention to the [assembly: TypeForwardedTo(typeof(Type))] attribute in System.Runtime.dll, which is forwarding to the mscorlib implementation.
Thanks!
Note that as of 2015-8-4 MSDN lists IsEnum under Type for .Net 4.5/4.6
https://msdn.microsoft.com/en-us/library/System.Type_properties(v=vs.110).aspx
Thanks @stephentoub, that helped!
Most helpful comment
@aggieben, you probably want .GetTypeInfo().IsEnum (GetTypeInfo is an extension method from the System.Reflection namespace). A bunch of Type's surface area was moved to TypeInfo, including IsEnum I believe. Regarding dotPeek, I've not tried it, but if I had to guess it's not paying attention to the [assembly: TypeForwardedTo(typeof(Type))] attribute in System.Runtime.dll, which is forwarding to the mscorlib implementation.