# Friday, May 9, 2003
« DotGNU & New Snapshot | Main | Eclipse on Mono »

Stuart asks:

Can IKVMC handle Class.forName if the target class is in an assembly that isn't directly referenced by the assembly making the call?

Yes, but then you have to specify the assembly qualified name of the class. For example:

Class.forName("System.Windows.Forms.Form, " +
    "System.Windows.Forms, " +
    "Version=1.0.3300.0, " +
    "Culture=neutral, " +

Another alternative, when the class hasn't been compiled to an assembly, is to instantiate a class loader and use that to load the class:

URL[] classpath = new URL[1];
classpath[0] = new URL("...");
ClassLoader loader = new URLClassLoader(classpath);
Class clazz = loader.loadClass("...");

Currently, when ikvm.exe isn't used to start your application you don't have an application class loader that loads classes from the directories specified in the CLASSPATH environment variable.

Friday, May 9, 2003 11:16:56 AM (W. Europe Daylight Time, UTC+02:00)  #    Comments [2]
Friday, May 9, 2003 5:13:04 PM (W. Europe Daylight Time, UTC+02:00)
Hmm. Are any parts of that optional? I can imagine asking users to specify "org.postgres.Driver, pgjdbc" as their driver, but "org.postgres.Driver, pgjdbc, Version=1.0, Culture=neutral, PublicKeyToken=blahblahblah" is probably a little extreme. Especially since if they were going to compile the JDBC driver themselves, they'd need to IKVMC it, sign it, and then figure out the public key token.

Is there any way to at least support forName without the Version, Culture and PublicKeyToken parts?
Friday, May 9, 2003 5:59:56 PM (W. Europe Daylight Time, UTC+02:00)
If the assembly is not signed, you only have to specify the type name and the assembly name (just like you imagined :-))
Comments are closed.