Method may only be called on a Type for which Type.IsGenericParameter is true

后端 未结 5 1303
一整个雨季
一整个雨季 2020-12-30 01:30

I am getting this error on a routine which uses reflection to dump some object properties, something like the code below.

MemberInfo[] members = obj.GetType(         


        
5条回答
  •  暖寄归人
    2020-12-30 02:30

    So what exactly is a "Type for which Type.IsGenericParameter is true"

    That means it is a generic type argument in an open generic type - i.e. where we haven't picked a T yet; for example:

    // true
    bool isGenParam = typeof(List<>).GetGenericArguments()[0].IsGenericParameter;
    
    // false (T is System.Int32)
    bool isGenParam = typeof(List).GetGenericArguments()[0].IsGenericParameter;
    

    So; have you got some open generics hanging around? Perhaps if you can give an example of where you got your obj from?

提交回复
热议问题