いやー今日はMSDN読みまくりでした(笑
半日ほど以下のコードを書くのに費やしてしまいました。
できてみれば「なーんだ」なのにね...
#そんな自分にorz...
恥を忍んで公開します(笑
Lib.cs
using System;
using System.Runtime.InteropServices;
namespace InteropTest
{
public interface IMyInterface
{
[return : MarshalAs(UnmanagedType.SafeArray,
SafeArraySubType=VarEnum.VT_VARIANT)]
object [] MakeArray();
}
[ClassInterface(ClassInterfaceType.None)]
public class Lib : IMyInterface
{
public Lib() {}
public object [] MakeArray()
{
object [] myArray = {"AAA", "BBB", "CCC"};
return myArray;
}
}
}
client.vbs
Set obj = WScript.CreateObject("InteropTest.Lib")
ary = obj.MakeArray()
For Each item In ary
WScript.Echo item
Next
command line
csc /t:library InteropTest.cs
regasm /codebase InteropTest.dll
#ちゃんと厳密名をつけましょう! > 自分
cscript client.vbs
result
AAA
BBB
CCC
追記
ハマった部分を書いてませんでした。
object [] の部分を、string [] と書いていた事が理由です。
client.vbs を実行すると「Type Mismatch」がでやがる...