attr_accessorがプロパティを作成するのはなぜ方法ですが、メソッドは単なるメソッドですか?
質問
C#とIronrubyの間の相互写真で遊んでいます。attr_accessor
を使用してRubyでプロパティを定義すると、C#がプロパティとして表示されます。一方、まったく同じコードを手動で作成する場合は、メソッドとして戻ってきます。
たとえば、このコードを取ります。
var engine = IronRuby.Ruby.CreateEngine();
string script = @"
class Test
attr_accessor :automatic
def manual
@manual
end
def manual=(val)
@manual = val
end
def initialize
@automatic = ""testing""
@manual = ""testing""
end
end
Test.new
";
var testObject = engine.Execute(script);
var automatic = testObject.automatic;
var manual = testObject.manual;
.
C#automatic
変数を見ると、値は「テスト」の文字列です。C#manual
変数を見ると、IRONRUBY.BUILTINS.RUBYMETHODの型です。
最終的には、C#で使用できるRubyで自分のプロパティを作成したいが、attr_accessor
のようなプロパティとして表示させることはできません。
Rubyソースコードのモジュールコード(moduleops.cs:deffeacccessor)に何らかの魔法が起こっていると思います。Rubyコードで直接これを行う方法はありますか?
解決
この特定の問題は、アイアンリービーコアスレッドでさらに議論された: http://"nofollow noreferrer"> http://"nofollow.org/pipermail/ironruby-core/2010-7月/ 007154.html
所属していません StackOverflow