Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get the container type for a nested type using reflection

Say I have a class like this:

public class Test {
    public class InnerTest{}
}

Now have a TypeInfo object for InnerTest. How can I find out the TypeInfo object for Test from InnerTest?

The other way around is simple, I can just use GetNestedTypes(), but I can't find a method or property (other than IsNestedType) to figure out the containing class for a Nested Class.

like image 647
jessehouwing Avatar asked Jul 30 '12 14:07

jessehouwing


2 Answers

You can get this by retrieving the property "DeclaringType".

Quoting MSDN:

A Type object representing the enclosing type, if the current type is a nested type; or the generic type definition, if the current type is a type parameter of a generic type; or the type that declares the generic method, if the current type is a type parameter of a generic method; otherwise, null.

http://msdn.microsoft.com/en-us/library/system.type.declaringtype.aspx

like image 157
Martin1921 Avatar answered Nov 08 '22 23:11

Martin1921


Sounds like you're looking for Type.DeclaringType property.

like image 31
ikh Avatar answered Nov 09 '22 00:11

ikh