Thanks Raymond, I've just made a new release. I made a few cosmetic changes, so please check if I didn't break anything.
On Tue, Nov 10, 2009 at 11:55 AM, Raymond Wiker rwiker@gmail.com wrote:
I've had a little startup trouble with RDNZL, but this is mainly due to my lack of familiarity with .NET. The use of Load instead of LoadWithPartialName will most likely not be noticed by most people, but will provide (IMO) more helpful behaviour in case of errors. It can also be extended, at some later point, to use fully-qualified assembly names.
The enclosed patch includes the trivial change to load-assembly, as well as a new macro called do-rdnzl-container. do-rdnzl-container does for general enumerable collections what do-rdnzl-arrays does for arrays.
Thank you for making rdnzl available!
On Nov 9, 2009, at 22:16 , Edi Weitz wrote:
Hi Raymond,
I have to admit that I rarely, if ever, used RDNZL myself. I started writing it for fun and only finished it because I gave a talk about it. At that time I was ambitious enough to bring it into a usable state, but as I didn't have any serious projects relying on it, I didn't keep track with .NET development and I'm sure it's out of tune now.
If you have changes to make RDNZL better, I'm happy to accept patches, but I won't be able to test or evaluate them due to lack of time. I'll simply pack them into a new release if they follow the usual patch guidelines:
Thanks, Edi.
On Mon, Nov 9, 2009 at 9:36 AM, Raymond Wiker rwiker@gmail.com wrote:
Hi, I'm trying to use rdnzl to interface with certain .NET libraries. These libraries have a callback mechanism that requires me to subclass a C# class (or implement a C# interface) with two specific methods. I haven't seen any mention that RDNZL can be used to subclass C# classes (which I guess would be non-trivial to do), so I'm guessing that I need to write a C# wrapper class for interfacing with Lisp.
I'm having certain problems with this, probably caused by some .NET details that I haven't (yet) understood. As part of unravelling this, I've discovered that import-assembly calls load-assembly and that a failure in load-assembly will cause a null assembly to be returned, from which import-assembly will import exactly zero items. In other words, any errors from load-assembly will not be signalled until later.
The MS documentation states that LoadWithPartialName (as used by load-assembly) is an obsolete call, and that that System.Reflection.Assembly.Load() should be used instead. Load() can even be used with partial names, like this:
(defun load-assembly-2 (name) (let ((fullname (new "System.Reflection.AssemblyName"))) (setf [%Name fullname] name) [System.Reflection.Assembly.Load fullname]))
I've just tried this, and load-assembly-2 gives an exception which is transferred perfectly through RDNZL in cases where load-assembly returns null.
Regards, Raymond Wiker
rdnzl-devel mailing list rdnzl-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/rdnzl-devel
rdnzl-devel mailing list rdnzl-devel@common-lisp.net http://common-lisp.net/cgi-bin/mailman/listinfo/rdnzl-devel