attr_accessorがプロパティを作成するのはなぜ方法ですが、メソッドは単なるメソッドですか?

StackOverflow https://stackoverflow.com/questions/3277885

  •  17-09-2020
  •  | 
  •  

質問

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top