0

配列を保持し、そのクラスをいくつかの COM 呼び出しで使用するクラスを作成しようとしています (C# を使用して作成します)。

だから、私はこのようなクラスを持っています:

DEFINE CLASS Logistics_Columns AS Session OLEPUBLIC
 DIMENSION COLUMNS_ARRAY[1]

 DIMENSION COLUMNS_ARRAY_COMATTRIB(4)
 COLUMNS_ARRAY_COMATTRIB(1) = 0 
 COLUMNS_ARRAY_COMATTRIB(2) = "COLUMNS_ARRAY"
 COLUMNS_ARRAY_COMATTRIB(3) = "COLUMNS_ARRAY"
 COLUMNS_ARRAY_COMATTRIB(4) = "Array"
ENDDEFINE 

DEFINE CLASS Logistics_Column AS Session OLEPUBLIC
 COLUMN_NAME = .NULL.
 DIMENSION COLUMN_NAME_COMATTRIB(4)
 COLUMN_NAME_COMATTRIB(1) = 0 
 COLUMN_NAME_COMATTRIB(2) = "COLUMN_NAME"
 COLUMN_NAME_COMATTRIB(3) = "COLUMN_NAME"
 COLUMN_NAME_COMATTRIB(4) = "Character"

 COLUMN_TYPE = .NULL.
 DIMENSION COLUMN_TYPE_COMATTRIB(4)
 COLUMN_TYPE_COMATTRIB(1) = 0 
 COLUMN_TYPE_COMATTRIB(2) = "COLUMN_TYPE"
 COLUMN_TYPE_COMATTRIB(3) = "COLUMN_TYPE"
 COLUMN_TYPE_COMATTRIB(4) = "Character"

 COLUMN_WIDTH = .NULL.
 DIMENSION COLUMN_WIDTH_COMATTRIB(4)
 COLUMN_WIDTH_COMATTRIB(1) = 0 
 COLUMN_WIDTH_COMATTRIB(2) = "COLUMN_WIDTH"
 COLUMN_WIDTH_COMATTRIB(3) = "COLUMN_WIDTH"
 COLUMN_WIDTH_COMATTRIB(4) = "Integer" 

 COLUMN_PRECISION = .NULL.
 DIMENSION COLUMN_PRECISION_COMATTRIB(4)
 COLUMN_PRECISION_COMATTRIB(1) = 0 
 COLUMN_PRECISION_COMATTRIB(2) = "COLUMN_PRECISION"
 COLUMN_PRECISION_COMATTRIB(3) = "COLUMN_PRECISION"
 COLUMN_PRECISION_COMATTRIB(4) = "Integer" 
ENDDEFINE  

Logistics_Column sクラスのC#では、COLUMNS_ARRAY は配列として認識されません。

まだまたは Logistics_Column クラスでは、4 つのプロパティすべてが文字列または整数として正しく表示されます。

COLUMNS_ARRAY_COMATTRIB(4) = "Array"「配列」 ( ) は、配列を示す正しいリテラル値ではない と思います。
しかし、その後、何ですか?

4

1 に答える 1

0

計画通り、カスタム コレクション ラッパーを作成しました。

Session OLEPUBLICこれは基本的に、そのメソッドを格納しCollectionてラップするタイプの foxpro クラスです。

パフォーマンスに関しては、かなりのオーバーヘッドが追加されると思いますが、最終的にはこれが最善の方法です。

于 2013-12-17T16:23:22.077 に答える