Testing for object equality in C# is different than it is in Ruby. In
C#, you need to override both Object.Equals and Object.GetHashCode (I
forget which is used when, but I do recall that the compiler complains
if you override one and not the other). So, when you bring your Ruby
object into C# and compare them, C# doesn't see an override for Equals
on your object, and thus uses Object.Equals (which is often what you
don't want). Try defining an equals method on your Ruby object, or
alias it to ==.

I suspect that the == method on your Ruby object does not map to
Equals when you bring into C#. And I'm not sure that it should.

Thoughts?

--
Will Green
http://hotgazpacho.org/



On Sep 9, 2010, at 4:33 AM, Davy Brion <ral...@davybrion.com> wrote:

> If i have the following class in ruby:
>
> class TestClass
>   def initialize(value)
>     @value = value
>   end
>
>   def ==(other)
>     return false if other.nil?
>     self.value == other.value
>   end
>
>   protected
>
>   def value
>     @value
>   end
> end
>
> test1 = TestClass.new(5)
> test2 = TestClass.new(5)
> p test1 == test2
> p test1 != test2
>
> the output is:
> true
> false
>
> if i do this in .NET:
>
> dynamic test1 = ruby.testcla...@new(5);
> dynamic test2 = ruby.testcla...@new(5);
>
> var equals = test1 == test2;
> var differs = test1 != test2;
>
> both equals and differs are true
>
> i'm going to create an issue about this, but i do need to get this working... 
> is there a temporary workaround that i can use for now?
> _______________________________________________
> 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