Callbacks/Loading Assemblies

Jan 13, 2010 at 9:50 PM

Hello,

I was wondering if it was supported to supply a callback function to a constructor.  Like this code does when creating a ResolveEventHandler. I would like to use it to load an assembly

in an arbitrary location using the AppDomain like http://www.chilkatsoft.com/p/p_502.asp.

        private void Form1_Load(object sender, EventArgs e)
{
//The AssemblyResolve event is called when the common language runtime tries to bind to the assembly and fails.
AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.AssemblyResolve += new ResolveEventHandler(currentDomain_AssemblyResolve);
}

       Assembly currentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
{ ...}

Also, when loading an assembly, I think I am supposed to put the dll into the C:\Program Files\IronScheme directory? I tried something like
(clr-reference "Core") (clr-using "Core") (new Core.Aut) but it throws an error saying it cant find the type. Also, is it supposed to throw an error when i referencce a non-existing
assembly?

Thanks!







Jan 13, 2010 at 9:52 PM

Scratch the first question. I just realized that clr-event-add! exists

 

Jan 13, 2010 at 10:34 PM

Sorry. Found the answer.

(import
 (ironscheme clr)
 (net shorthand))

(clr-event-add!
 AppDomain AssemblyResolve
 (% AppDomain.CurrentDomain)
 (lambda (sender args)
    (display "BOO")
    (: System.Reflection.Assembly.LoadFrom "C:/Program Files/IronScheme/Core.dll")))

(use Core)
(new Core.CoreAutClass)

net shorthand basically is my library which passes #f everything, invoking reflection and defines some shortcuts. I was having some problems when i had the dll named

to Interop.Core but when i renamed it it apparently worked out.