我想使用Ruby v1.93在COM對象中設置數組屬性。將數組從一個數組編組到一個Ruby數組中是行得通的,但不是在另一個方向上。我如何將一個Ruby數組放入COM中?使用Ruby和Win32OLE設置數組
屬性包含在.NET程序集:
namespace LibForRuby
{
public class MyClass
{
public MyClass()
{
MyInt = 1;
MyArray = new[] {2, 3};
}
public int MyInt { get; set; }
public int[] MyArray { get; set; }
}
}
我的整個Ruby腳本是:
require 'win32ole'
com_class = WIN32OLE.new('LibForRuby.MyClass')
puts 'Before:'
my_int = com_class.MyInt
puts my_int
my_array = com_class.MyArray
print my_array
puts
puts 'After:'
com_class.MyInt = 10
my_int = com_class.MyInt
puts my_int
com_class.MyArray = [20,30]
my_array = com_class.MyArray
print my_array
輸出是:
C:\Ruby193\bin>test
Before:
1
[2, 3]
After:
10
C:/Ruby193/bin/test.rb:13:in `method_missing': (in setting property `MyArray':)
(WIN32OLERuntimeError)
OLE error code:0 in <Unknown>
<No Description>
HRESULT error code:0x80020005
Type mismatch.
from C:/Ruby193/bin/test.rb:13:in `<main>'
嗯......你的新代碼是由代碼行我已經在嘗試之前他在帖子中顯示的錯誤。假設你打算省略那一行,我試圖在沒有它的情況下運行,但是對setproperty的調用失敗:在'ole_method'中:找不到MyArray。 – 2014-12-05 21:09:12
實際上,print com_class.ole_get_methods給了我[]。 – 2014-12-05 21:32:40
哎呀,意在刪除失敗的線路。可憐的複製/粘貼作業。你有沒有試過運行這個(編輯)的代碼呢?什麼是結果和/或錯誤? – 2014-12-06 03:01:59