Hello,
How can I go about setting an instance variable on a RubyClass?
Here's some code for context:
[RubyClass("Graphics")]
public class Graphics
{
[RubyMethod("frame_rate", RubyMethodAttributes.PublicSingleton)]
public static int GetFrameRate(RubyClass self)
{
// What goes here?
// I could use self.TryGetClassVariable, but that's a *class*
variable, correct?
// I want to achieve the same thing as "return @frame_rate",
// not "return @@frame_rate"
}
[RubyMethod("frame_rate=", RubyMethodAttributes.PublicSingleton)]
public static void SetFrameRate(RubyClass self, int frameRate)
{
// Same thing here. I could do this:
// self.SetClassVariable("frame_rate", frameRate);
// but I want to achieve the same as this:
// @frame_rate = frame_rate
}
}
Another option *just* dawned on me; how about these two:
self.Context.SetInstanceVariable(self, "frame_rate", frameRate);
self.Context.TryGetInstanceVariable(self, "frame_rate", out frameRate);
Is that what I'm looking for?
One more question: is there a way to get the library initializer to invoke
a callback so that I may perform some initialization for the RubyClass
itself? In the case above, I'd like to initialize the frame_rate when the
RubyClass is created. As an example:
class Graphics
attr_accessor :frame_rate
frame_rate = 40
end
...
Graphics.frame_rate = something_else
I'd like that "frame_rate = 40" to happen when the assembly is loaded by the
IronRuby runtime, if possible. I'm sure I could type that into my
auto-generated LibraryInitializer, but I'd rather do this declaratively,
perhaps using Attributes (like RubyMethod and RubyClass, etc).
Thanks,
-Charles
_______________________________________________
Ironruby-core mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/ironruby-core