Skip to content

Instantly share code, notes, and snippets.

@JeffreyZhao
Created November 21, 2012 03:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save JeffreyZhao/4122908 to your computer and use it in GitHub Desktop.
Save JeffreyZhao/4122908 to your computer and use it in GitHub Desktop.
public class MyClass<T>
{
public class Nested { }
}
internal class Program
{
private static void Main(string[] args)
{
Console.WriteLine(typeof(MyClass<>).GetNestedType("Nested")); // MyClass<>.Nested
Console.WriteLine(typeof(MyClass<int>).GetNestedType("Nested")); // Still MyClass<>.Nested ???
Console.ReadLine();
}
}
@beginor
Copy link

beginor commented Nov 21, 2012

测试代码如下:

var type1 = typeof(MyClass<int>).GetNestedType("Nested");
var type2 = typeof(MyClass<string>).GetNestedType("Nested");
var type3 = typeof(MyClass<>).GetNestedType("Nested");
Console.WriteLine("type1 is {0}", type1);
Console.WriteLine("type2 is {0}", type2);
Console.WriteLine("type3 is {0}", type3);

var n1 = new MyClass<int>.Nested();
var n2 = new MyClass<string>.Nested();

Console.WriteLine("n1.GetType() is {0}", n1.GetType());
Console.WriteLine("n2.GetType() is {0}", n2.GetType());

输出结果为:

type1 is TransitServerTest.MyClass`1+Nested[T]
type2 is TransitServerTest.MyClass`1+Nested[T]
type3 is TransitServerTest.MyClass`1+Nested[T]
n1.GetType() is TransitServerTest.MyClass`1+Nested[System.Int32]
n2.GetType() is TransitServerTest.MyClass`1+Nested[System.String]

貌似真的是 bug , 求解释

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment