我是自托管IronRuby并且想要使用.NET程序集" Math.dll"它使用" Math" -namespace。我可以使用其他程序集但不能使用此程序集:
require "Math.dll"
require "Unsafe.dll"
consts = Math.constants
#consts = Unsafe.constants
consts.each { |const|
System::Console.WriteLine( const)
}
它只返回" PI"和" E"由ruby数学模块给出。使用另一个程序集返回其中定义的.net类。托管程序以相同的方式使用这两个程序集。
DLR版本:1.1.0.1 Ironruby版本:1.1.0.0,1.1.3.0和1.1.4.0(2014年第6期)
答案 0 :(得分:0)
此问题的解决方法,但不是一般解决方案:
在IronRuby.Library项目中更改
[RubyModule("Math")]
在RubyMath.cs中,或
DefineGlobalModule("Math", typeof(IronRuby.Builtins.RubyMath), 0x0000000F, LoadMath_Instance, LoadMath_Class, LoadMath_Constants, IronRuby.Builtins.RubyModule.EmptyArray);
<。>在Initializers.Generated.cs中,“Math”字符串(例如“Math __”)。 现在你可以把它结合起来:
require "Math.dll"
module Math
include Math__
end
consts = Math.constants
consts.each { |const|
System::Console.WriteLine( const)
}
我不知道是否有任何依赖项受到影响。