Tuesday, April 5, 2011

Using Assembly.GetType("MyCompany.Class1.Class2") returns null

I'm attempting to use Assembly.GetType("MyCompany.Class1.Class2") to dynamically get a type from a string.

Assembly.GetType("MyCompany.Class1");

works as expected.

If I embed a class within another class such as:

namespace MyCompany
{
  public class Class1
  {
     //.....
     public class Class2
     {
        //.....
     }
  }
}

and try to get the type Class2

Assembly.GetType("MyCompany.Class1.Class2")

will return a null.

I'm using the .NET Frameworks 3.5 SP1

Does anyone know what I'm doing incorrectly and what I can do to fix this?

Thanks in advance

Kevin D. Wolf Tampa, FL

From stackoverflow
  • You need the Plus sign to get Nested Classes to be mapped using Assembly.GeType.

     Assembly.GetType("MyCompany.Class1+Class2");
    
    P Daddy : You're close. You need "MyCompany.Class1+Class2".
    CMS : Yep, just noticed it, thanks!
    Hallgrim : If the assembly isn't loaded in memory, you need to have the fully qualified type name. GetType("MyCompany.Class1+Class2, MyAssembly");
  • I think it's named MyComnpany.Class1+Class2.

    If I run this code on a similar structure, that's what I see:

    Assembly assem = Assembly.GetExecutingAssembly();
    Type[] types = assem.GetTypes();
    

    example Types to see the names.

  • You need to use plus signs. Something like "MyAssembly.Class1+NestedClass".

0 comments:

Post a Comment