Forum: IronRuby Looking for more information on rubifying C# classes

Posted by Adam Burmister (Guest)
on 2010-01-28 20:53
(Received via mailing list)
Hello IronRubyists,

I'm currently hunting around trying to find references on rubifying a C# 
class for something I'm writing.

I have a few questions:
- Can you confirm this summary of the process to be correct (am I 
missing any steps):
  The generate class intialiser exe parses the attributes out and 
generates the initializer file. Then you recompile the library with the 
added initializer class included.
  When using load_assembly you pass in the name of the initializer class 
name as the second parameter.
  Under the covers that initializer tells IronRuby how to create the 
ruby API.

- Is there any documentation for the Ruby* attributes? (RubyMethod, 
RubyConstant, etc)
I can easily guess at what these are/do, but I just wanted to know if 
there is a definitive source.

- What are the differences between require and load_assembly (besides 
load_assembly loading the file on every call)

Any answers or comments would be greatly appreciated.

Thank you,
Adam Burmister
Posted by Shri Borde (Guest)
on 2010-01-28 21:18
(Received via mailing list)
The steps sound correct.

The attributes are pretty easy to understand if you search for existing 
uses. The harder part is how to declare the arguments with annotations 
for Ruby semantics. 
http://wiki.github.com/ironruby/ironruby/modifying-the-sources has some 
info. Please add to it if you can.

Could you provide info about why you need to Rubyify your C# class? 
IronRuby already exposes a Rubified view  for all .NET classes (for 
example, allowing you to use "lower_case" names for methods)? You need 
to rubyify your code mainly if you want strict Ruby semantics as is 
needed by the builtin library types.

load_assembly is just more explicit. See 
http://ironruby.net/Documentation/.NET/Assemblies. load_assembly does 
not load the assembly on every call as .NET does not support reloading 
an assembly multiple times. Perhaps it should have been called 
require_assembly...
Posted by Shri Borde (Guest)
on 2010-01-28 21:54
(Received via mailing list)
Also, load_assembly calls the library initializers if called with a 
second argument which is the namespace within the assembly to look in 
for the attributes (RubyMethod, RubyConstant, etc). See 
Merlin\Main\Languages\Ruby\Libs\thread.rb as an example for this usage 
of load_library.
Posted by Shri Borde (Guest)
on 2010-02-01 21:40
(Received via mailing list)
Tomas has updated http://ironruby.net/Documentation/.NET/Assemblies. 
Thanks for the good info, Tomas
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.