要反射的程序集代码:
namespace ReflectionClassLibrary
{
/// <summary>
/// 第一层
/// </summary>
public class A
{
/// <summary>
/// 第二层
/// </summary>
public class B
{
/// <summary>
/// 第三层
/// </summary>
public class C
{
public string member;
public C(string arg)
{
member = arg;
}
}
}
}
}
主程序代码:
class Program
{
static void Main(string[] args)
{
Assembly assembly = Assembly.Load("ReflectionClassLibrary");
//注意此处:子级与上级类连接用加号(+),命名空间与类之间用点(.)
Type type = assembly.GetType("ReflectionClassLibrary.A+B+C");
ReflectionClassLibrary.A.B.C obj_C = Activator.CreateInstance(type, "TestC") as ReflectionClassLibrary.A.B.C;
Console.WriteLine(obj_C.member);
Console.ReadKey();
}
}
运行结果:
唯一要注意的是:
命名空间与类之间用点(.)连接;子级与上级类用加号(+)连接。