Reflection with unknown assembly?

Hi there!
I'm working with System.Reflection. So far it works nicely for dll's, like to invoke a static method:
                        
Assembly assembly = Assembly.LoadFrom(dllName);
System.Type type = assembly.getType(className);
MethodInfo method = type.GetMethod(mName,types);  // types are the types of parameters I'm using
Object myObj = method.Invoke(null,myParams);
...

What do I do though, if I want to call a method of a class not in that dll, but say, for example, in System.IO? That is, I'm calling this reflection method from a different program, and I can specify that I want to use method "getFiles()" in class "Directory" or even class "System.IO.Directory". But of course I don't specify the assembly to use.
Is there a way to do that? Hope my question is clear, if not, please ask...
Thanks!
epaga
epagaAsked:
Who is Participating?
 
ptmcompCommented:
If you want to use a class that is defined in the System.IO assembly (e.g. FileStream) then you need to load it. You can use Type.GetType(string, bool); to load a type dynamically from an assembly.

Type fileStreamType = Type.GetType("System.IO.FileStream, System.IO");   // classname, assembly name (without .dll)
0
 
ptmcompCommented:
It is definitely possible since there is a program called ".net Reflector" from Lutz Roeder which is doing it. But you must know where your class is located / what assemblies you need to load to create the class. You could of course load a set of assemblies by default but if the class is defined in a different assembly that particular assembly and its dependencies must be loaded.
0
 
epagaAuthor Commented:
so say I do know I need "System.IO"...how do I load that dynamically?

epaga
0
 
ptmcompCommented:
You can also load an assemlby and enumerate all the types that it defines.
0
 
epagaAuthor Commented:
That's exactly what I wanted to know!
Thanks ptmcomp...
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.