人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

VBScript/JScriptから呼び出すCOMをC#で作っていますが、分からないことが有ります。
COMからの戻り値に、配列を値に持つScripting.Dictionaryを使います。
しかし、
>||
namespace MyTest
{
class Class1
{
static Class1()
{
Scripting.Dictionary dic = new Scripting.Dictionary();
Object[] ary = new Object[2];
Object str1 = "A";
Object str2 = "B";
ary[0] = str1;
ary[1] = str2;
Object key = "key";
dic.Add(ref key, ref ary);
}
}
}
||<
の様に実装すると、
>||
引数 '2': 'ref object[]' から 'ref object' に変換できません。
||<
とエラーが出てビルドできません。

なお、VBScriptに配列はObjectの配列として返さなければなりません。

どう実装を修正すればよいでしょうか?

●質問者: Gabegin
●カテゴリ:コンピュータ
✍キーワード: Class ADD C# DIC JScript
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● mj99
●100ポイント ベストアンサー

いちおう、これでいけました。

using System;
using System.Collections.Generic;
using System.Text;

namespace ClassLibrary1
{
 public class Class1
 {
 static Scripting.Dictionary dic = new Scripting.Dictionary();

 static Class1()
 {
 Object[] w_ary = new Object[2];
 Object str1 = "A";
 Object str2 = "B";
 w_ary[0] = str1;
 w_ary[1] = str2;
 Object key = "key";
 Object ary = w_ary; // Object型に代入する
 dic.Add(ref key, ref ary);
 }

 public object test1()
 {
 return dic;
 }

 }
}

----

おまけ。VB.NETでのテストコード

Public Class Form1

 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
 Dim cs1 As New ClassLibrary1.Class1
 Dim dic As Object = cs1.test1()
 Dim dat As Object = dic("key")
 Debug.Print(dat(0))
 Debug.Print(dat(1))
 End Sub

End Class
◎質問者からの返答

ばっちりです。

ありがとうございます!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ