just pass your block to the constructor of a delegate and you should be good to go
Action.new { more_work_here } --- Met vriendelijke groeten - Best regards - Salutations Ivan Porto Carrero Blog: http://flanders.co.nz Twitter: http://twitter.com/casualjim Author of IronRuby in Action (http://manning.com/carrero) On Tue, Feb 2, 2010 at 11:38 PM, Ryan Riley <ryan.ri...@panesofglass.org>wrote: > That's fantastic, Tomas, thanks! Is there any way to pass a block, lambda, > or Proc into the slot for the delegate, or perhaps a way to create a .NET > delegate (or Expression) from a block, lambda, or Proc? > > Thanks, > > Ryan Riley > > Email: ryan.ri...@panesofglass.org > LinkedIn: http://www.linkedin.com/in/ryanriley > Blog: http://wizardsofsmart.net/ > Twitter: @panesofglass > Website: http://panesofglass.org/ > > > On Tue, Feb 2, 2010 at 1:36 AM, Tomas Matousek < > tomas.matou...@microsoft.com> wrote: > >> Actually, you can add Ruby methods to List<T> … IronRuby type system does >> some magic for you J: >> >> >> >> >>> include System::Collections::Generic >> >> => Object >> >> >>> List[Fixnum].included_modules >> >> => [System::Collections::Generic::List[T], >> System::Collections::Generic::IList[Fixnum], >> System::Collections::Generic::IList[T], >> System::Collections::Generic::ICollection[Fixnum], >> System::Collections::Generic::ICollection[T], >> System::Collections::Generic::IEnumerable[Fixnum], >> System::Collections::Generic::IEnumerable[T], >> System::Collections::IEnumerable, Enumerable, System::Collections::IList, >> System::Collections::ICollection, System::Collections::Generic, Kernel] >> >> >> >> As you can see the List<> generic type definition is treated as a module >> that is mixed in each of its instantiations. Although there are no >> predefined methods on it you can open it and add some. First we need to get >> Ruby class for List<T>. If you index System.Collections.Generic.List by a >> fixnum instead of a class/module you’ll get the generic definition of arity >> 1. Let’s name it ListOfT: >> >> >> >> >>> ListOfT = List[1] >> >> >> >> And then we can open it up: >> >> >> >> >>> module ListOfT >> >> ... def size >> >> ... count >> >> ... end >> >> ... end >> >> => nil >> >> >>> l = List[Fixnum].new >> >> => [] >> >> >>> l.add(1) >> >> => nil >> >> >>> l.add(2) >> >> => nil >> >> >>> l.size >> >> => 2 >> >> >> >> Tomas >> >> >> >> >> >> *From:* ironruby-core-boun...@rubyforge.org [mailto: >> ironruby-core-boun...@rubyforge.org] *On Behalf Of *Orion Edwards >> *Sent:* Monday, February 01, 2010 6:31 PM >> *To:* ironruby-core@rubyforge.org >> *Subject:* Re: [Ironruby-core] A nicer syntax for generic extension >> methods >> >> >> >> IIRC you can open "concrete" generics, but not "open" ones: In plain >> english this means you can add methods to List<string> but not List<T>. >> >> >> >> This is essentially because List<T> isn't a real type in the CLR, it's >> basically some metadata that can be used to build a real type when the T is >> supplied. >> >> >> >> You could as an alternative add methods to the underlying non-generic >> IEnumerable interface, but then you'd have to do some run-time reflection to >> figure out that your List is actually a List<string>... This is probably not >> nice. >> >> >> >> In theory when CLR4 lands and has support for co/contra variant generics, >> List<object> should match List<string> and everything else, but I don't know >> if IronRuby would also work for this? >> >> >> >> Good luck >> >> On Tue, Feb 2, 2010 at 7:52 AM, Ryan Riley <ryan.ri...@panesofglass.org> >> wrote: >> >> I have been trying to figure out how to Rubify generic extension methods >> for use with the likes of Rx, Open XML SDK, etc. Ivan went over it a bit >> with me this weekend, but I'm still having difficulty including a module >> within a .NET type. Is that even possible? >> >> >> >> ... >> >> >> >> The questions I'm not able to answer are: >> >> 1. Can I somehow open up a .NET class, say >> System::Collections::Generic::List[T] and include the >> EnumerableExtensions? >> So far, I'm finding that's a no. >> 2. How do I hook in the included(base) method above? I'm assuming >> that's a one-time call, but I don't see anywhere that it's called when a >> module is included. Do I need to use a before_filter or perform that >> action >> at the beginning of the linq_select method? >> >> >> >> Thanks! >> >> >> Ryan Riley >> >> Email: ryan.ri...@panesofglass.org >> LinkedIn: http://www.linkedin.com/in/ryanriley >> Blog: http://wizardsofsmart.net/ >> Twitter: @panesofglass >> Website: http://panesofglass.org/ >> >> _______________________________________________ >> Ironruby-core mailing list >> Ironruby-core@rubyforge.org >> http://rubyforge.org/mailman/listinfo/ironruby-core >> >> >> >> _______________________________________________ >> Ironruby-core mailing list >> Ironruby-core@rubyforge.org >> http://rubyforge.org/mailman/listinfo/ironruby-core >> >> > > _______________________________________________ > Ironruby-core mailing list > Ironruby-core@rubyforge.org > http://rubyforge.org/mailman/listinfo/ironruby-core > >
_______________________________________________ Ironruby-core mailing list Ironruby-core@rubyforge.org http://rubyforge.org/mailman/listinfo/ironruby-core