请问在.NET中,如何知道一个Type是否是Generic.List?急!
在.NET中,如何获知一个Type是否是一个Generic Type?比如一个List或者一个Dictionary?
由于有Reflection,获知一个Type是什么类型都很好办,Array绕绕也能绕出来,但如果遇到Generic类型就有点麻烦了。
比如(C#):
class A
{
}
class B
{
Int32 ma;
List<Int32> mb;
List<A> mc;
Dictionary<string,A> md;
}
class Foo
{
static void Foo()
{
B b = new B();
FieldInfo[] TypeMemberInfo = ObjType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);
foreach (FieldInfo fi in TypeMemberInfo)
{
FooField(b, fi);
}
}
static void FooField( object obj, FieldInfo fi )
{
//根据object的类型来完成相应的工作
if ( typeof(Int32) == fi.FieldType )
{
// do somthing...
}
// 问题来了……怎么判断Generic Type呢?
// 下面的方法已经测试过了,不行的:
else if ( typeof(List<>) == fi.FieldType )
{}
else if ( typeof(Dictionary<,>) == fi.FieldType )
{}
}
}