tags:

views:

2512

answers:

3

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

+4  A: 

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

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

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.

plinth
A: 

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

BFree