Ruby Instance of C# Class Isn't Really the C# Class


#1

Hi,

I have a class defined in C# which I’m creating in Ruby and returning;
then
C# adds it to an array. It’s simple (honest).

My setup is simple: the main project, and a class library called
“SharedClasses.” Here’s a class:

public class SimpleItem
{
public string Name { get; set; }
public int Value { get; set; }

    public SimpleItem(string name, int value)
    {
        this.Name = name;
        this.Value = value;
    }
}

Okay, nothing special here. Now, in Ruby, here’s the script I want to
run:

require ‘SharedClasses.dll’
include SharedClasses
SimpleItem.new(“Red Gem”, 100);

What I want to achieve, is to return the instance created back to C#,
and
add it to a List.

I can’t do it. Currently, I get an InvalidOperationException: “can’t
convert SharedClasses::SimpleItem into SharedClasses::SimpleItem”

Here’s the code I use to create the Ruby instance:

var engine = Ruby.CreateEngine();
var newItem = engine.Execute(ruby);

I posted a Stack Overflow question for a more complex version of this
problem (this is the simplest case I could distill). Under other
circumstances, I can see that the two instances are the same, except
their
context (one is Default and one is LoadNeither).

Full post is here:
http://stackoverflow.com/questions/18774700/cant-convert-xyz-to-xyz-in-ironruby

What am I doing wrong?

–Ashiq

P.S. Visual Studio 2012 solution zip file, including IronRuby 1.13 via
NuGet, is available here: http://temp-share.com/show/KdP0s538h


#2

Hi Ashiq,

I remember running into something similar, I think I needed to use:

load_assembly ‘SharedClasses.dll’


#3

Hi Brandon,

Thanks, it works like a charm. I would love to know why, though :slight_smile:

The working syntax was actually without the .dll extension:
load_assembly
‘SharedClasses’

If you’re on Stack Overflow, feel free to reply to my answer (so you can
get the rep for it). If not, I will reply myself, so that it’s forever
documented.

Cheers,

–Ashiq