我是自托管的IronRuby,并且想使用一个使用"Math"命名空间的。net程序集"Math.dll"。我可以使用其他程序集,但不是这个:
require "Math.dll"
require "Unsafe.dll"
consts = Math.constants
#consts = Unsafe.constants
consts.each { |const|
System::Console.WriteLine( const)
}
它只返回由ruby数学模块给出的"PI"one_answers"E"。使用另一个程序集返回其中定义的。net类。宿主程序以相同的方式使用这两个程序集。
DLR-version: 1.1.0.1ironruby版本:1.1.0.0,1.1.3.0和1.1.4.0(2014年7月6日)
此问题的解决方法,但不是一般解决方案:
- 获取源代码
-
库项目更改
在RubyMath.cs中[RubyModule("Math")]
,或者
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)
}
我不知道是否有任何依赖关系受到影响