0

私はC#で小さなライブラリを作成しました。

このライブラリには、である2つのクラスがありComVisibleます。

最初のものには、カスタムオブジェクトの配列を提供するメソッドがあります(2番目のクラスで宣言されています)。

小さなc#アプリケーションでライブラリをテストしたところ、すべてが機能しました。それから私は同じことVB6をします。前に説明したメソッドを呼び出すと、問題が発生します。タイプミスマッチエラーが発生します。

BV6コードは次のとおりです。

   Private Sub Command1_Click()
       Dim Flussi As FMDriver.FMDriver  
       Set Flussi = New FMDriver.FMDriver
       [...]
       Dim temp() As FMDriver.FM
       temp = Flussi.GetElabData(station, codpar, data, tabella, nfunz, tiponfunz)
       [...]

これはカスタムクラスですFM

[ComVisible(true)]
public partial class FM
{
    public FM() { }

    [ComVisible(true)]
    public double Value { get; set; }

    [ComVisible(true)]
    public double IDisp { get; set; } 
}

何か案が?応答から1つの要素のみを抽出すると、機能します。

編集:

もう一つの奇妙なこと...

Dim pippo As FM
Set pippo = CreateObject("fmdriver.fm")
pippo.Value = 100
pippo.IDisp = 43    
pippo = Flussi.GetElabData( [..cut..] )(4)

配列の4番目の位置に戻るPippo.Value正しい値がありますが、値は変更されず、新しい値を取得する代わりにそのまま残ります。GetElabDataPippo.IDisp43

4

1 に答える 1

0

最後に、カスタム obj (.NET アプリ用) を返すすべての美しいメソッドと、[ComVisible(true)]値の単純な配列 (他のメソッドの結果の一部) を返す VB6 専用のタグ付きのメソッドをいくつか作成しました。 . したがって、カスタム Obj を VB6 に戻すことは信頼性が低く、まったく機能しない場合があると思います。

于 2012-11-29T10:44:24.980 に答える