You can't call a C# extension method off of the object. You might try
creating a mixin to add a method_missing to catch and call the appropriate
extensions. Otherwise, I think you have to call them as static members, e.g.
Enumerable.First.Of(Sheet).call(b). That looks horrifying, I know. I don't
have IR available on this machine, or I would try it myself. Let me know how
that goes. This seems like it will be a fairly common problem for things
like LINQ, PFx and Rx. Maybe we can come up with a simple, one-size-fits-all
solution?


Ryan Riley

Email: ryan.ri...@panesofglass.org
LinkedIn: http://www.linkedin.com/in/ryanriley
Blog: http://wizardsofsmart.net/
Website: http://panesofglass.org/


On Fri, Nov 20, 2009 at 9:17 AM, Thibaut Barrère
<thibaut.barr...@gmail.com>wrote:

> Hi,
>
> I'm testing out the OpenXML SDK with IronRuby (0.9.2). Turns out it's full
> of generics in there, a good play field.
>
> Here I'm trying to use the API to retrieve a list of sheets in an existing
> xslx.
>
> I'm having a hard-time understanding why I can't call "b.first" in the next
> snippet (full version at http://gist.github.com/239555):
>
> doc = SpreadsheetDocument.open('docs/single-cell.xlsx', false)
>
>
>
> a = doc.workbook_part.workbook.method(:get_first_child).of(Sheets).call
>
> puts a
>
> # -> DocumentFormat.OpenXml.Spreadsheet.Sheets
>
>
>
> b = a.method(:elements).of(Sheet).call
>
> puts b
>
> # -> 
> DocumentFormat.OpenXml.OpenXmlElementList+<OfType>d__0`1[DocumentFormat.OpenXml.Spreadsheet.Sheet]
>
>
>
> # b.first or anything similar fails
>
> *
>
> *
>
> It turns out that b.methods shows a "to_a" method is available, then I can
> do :
>
> puts b.to_a.first # woot!
>
> # -> DocumentFormat.OpenXml.Spreadsheet.Sheet
>
>
> So my questions are:
> - why can't I call b.first ? (maybe there's something obvious I didn't see
> - I assume it's probably that)
> - are there better ways of writing this ?
>
> And if you are interested to follow (I really need to wrap some ruby sugar
> around all this to make it easier to work with), I'll push my experiments
> here:
>
> http://github.com/thbar/openxml-labs
>
> thanks,
>
> Thibaut
> --
> http://www.learnivore.com
>
> _______________________________________________
> 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

Reply via email to