Question

I want to be able to load assembly at run time and being able to use all of it's types in my code.

I know how to instantiate an object by loading an assembly: that is by

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

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

But that will allow me to access one object of the entire assembly. But if I want to use other members of the assembly like enums and other static classes then how can I do it?

If I was referencing to the assembly at the compile time then I should be able to do somehting like Assemblyname.membername. But since I am loading this one at runtime. How can I do that?

Était-ce utile?

La solution

If you want all types (including private types) use Assembly.GetTypes()

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

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

If you want only public types use GetExportedTypes:

foreach(Type type in assembly.GetExportedTypes())
    Console.WriteLine(type.ToString());
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top