0

我希望能够在运行时加载程序集并能够在我的代码中使用它的所有类型。

我知道如何通过加载程序集来实例化对象:即

assembly = Assembly.LoadFrom(@"C:\Users\c_desaik\Desktop\PowerTool.exe");

            Type type = assembly.GetType("PowerTool.Automation");
            powerTool = Activator.CreateInstance(type);  

但这将允许我访问整个程序集的一个对象。但是,如果我想使用程序集的其他成员,例如枚举和其他静态类,那么我该怎么做呢?

如果我在编译时引用程序集,那么我应该能够执行类似 Assemblyname.membername 的操作。但是因为我是在运行时加载这个的。我怎样才能做到这一点?

4

1 回答 1

1

如果您想要所有类型(包括私有类型),请使用Assembly.GetTypes()

assembly = Assembly.LoadFrom(@"C:\Users\c_desaik\Desktop\PowerTool.exe");

foreach(Type type in assembly.GetTypes())
    Console.WriteLine(type.ToString());

如果您只想要公共类型,请使用GetExportedTypes

foreach(Type type in assembly.GetExportedTypes())
    Console.WriteLine(type.ToString());
于 2013-08-23T04:33:00.000 回答