Com Pass数组具有foxpro(到c#)的对象属性

Com Pass数组具有foxpro(到c#)的对象属性,com,foxpro,Com,Foxpro,我试图创建一个包含数组的类,并在一些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" COLUM

我试图创建一个包含数组的类,并在一些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  
在C#中,对于Logistics_Columns类,Columns_数组不被视为数组

然而,在Logistics_Column类中,所有4个属性都被正确地视为字符串或整数

我猜“Array”(
COLUMNS\u Array\u comatrib(4)=“Array”
)不是表示数组的正确文字值。

那么,是什么呢?

按照计划,我创建了一个自定义集合包装器

它基本上是一个类型为
Session-OLEPUBLIC
的foxpro类,用于存储
集合
,并封装其方法


关于性能,我认为这会增加一些明显的开销,但这是我最终可能采用的最佳方法。

我认为你做不到。也许考虑使用一个集合而不是一个数组?你是对的。我将使用可通过COM访问的集合包装器,以便C#能够直接使用它。