dotnet/runtime
View on GitHubReflection on enums creates instances of open generic types
Open
#7,976 opened on Apr 28, 2017
area-System.Reflectionbughelp wanted
Repository metrics
- Stars
- (17,886 stars)
- PR merge metrics
- (Avg merge 12d 11h) (661 merged PRs in 30d)
Description
From https://codeblog.jonskeet.uk/2017/04/26/surprise-creating-an-instance-of-an-open-generic-type/
using System;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
object x = GetWeirdValue();
// This line prints True
Console.WriteLine(x.GetType().GetTypeInfo().IsGenericTypeDefinition);
}
static object GetWeirdValue() =>
typeof(Generic<>.GenericEnum).GetTypeInfo()
.GetDeclaredField("Foo")
.GetValue(null);
class Generic<T>
{
public enum GenericEnum
{
Foo = 0
}
}
}