OpenEdge 获取使用 DYNAMIC-属性 检索的 属性 值的数据类型
OpenEdge get data-type of property value that is retrieved using DYNAMIC-PROPERTY
我必须使用 OpenEdge 中的 DYNAMIC-PROPERTY
函数从 class 中获取数据。
到目前为止一切正常,但现在我想知道检索到的值的数据类型。这是必需的,因为值是根据数据类型格式化的。
例如:
CLASS Customer:
DEF PUBLIC PROPERTY Name AS CHAR NO-UNDO
GET.
SET.
DEF PUBLIC PROPERTY Email AS CHAR NO-UNDO
GET.
SET.
CLASS Invoice:
DEF PUBLIC PROPERTY Amount AS DECIMAL NO-UNDO
GET.
SET.
DEF PUBLIC PROPERTY Customer AS Customer NO-UNDO
SET.
GET.
在另一个程序中我想做这样的事情:
DEF INPUT PARAM oInvoice AS Invoice NO-UNDO.
DEF VAR theValue AS Progress.Lang.Object NO-UNDO.
theValue = DYNAMIC-PROPERTY(oInvoice, "Amount").
IF theValue:WHATS-THE-TYPE = "decimal" THEN
RETURN STRING(theValue, ">>>>>9.99").
ELSE
RETURN TRIM(theValue). // It is a character field
由于我不知道运行时的类型,因此无法格式化该值。
在后期我什至想获得客户的 属性 值。
IF theValue:WHATS-THE-TYPE = "Customer" THEN
RETURN DYNAMIC-PROPERTY(theValue, "Name").
OpenEdge 11.6 引入了反射 API 允许查询。
DEFINE VARIABLE oProperties AS Progress.Reflect.Property NO-UNDO EXTENT .
oProperties = oObject:GetClass():GetProperties() .
DO i = 1 TO EXTENT (oProperties):
MESSAGE oProperties[i]:Name oProperties[i]:DataTypeName .
END.
我必须使用 OpenEdge 中的 DYNAMIC-PROPERTY
函数从 class 中获取数据。
到目前为止一切正常,但现在我想知道检索到的值的数据类型。这是必需的,因为值是根据数据类型格式化的。
例如:
CLASS Customer:
DEF PUBLIC PROPERTY Name AS CHAR NO-UNDO
GET.
SET.
DEF PUBLIC PROPERTY Email AS CHAR NO-UNDO
GET.
SET.
CLASS Invoice:
DEF PUBLIC PROPERTY Amount AS DECIMAL NO-UNDO
GET.
SET.
DEF PUBLIC PROPERTY Customer AS Customer NO-UNDO
SET.
GET.
在另一个程序中我想做这样的事情:
DEF INPUT PARAM oInvoice AS Invoice NO-UNDO.
DEF VAR theValue AS Progress.Lang.Object NO-UNDO.
theValue = DYNAMIC-PROPERTY(oInvoice, "Amount").
IF theValue:WHATS-THE-TYPE = "decimal" THEN
RETURN STRING(theValue, ">>>>>9.99").
ELSE
RETURN TRIM(theValue). // It is a character field
由于我不知道运行时的类型,因此无法格式化该值。
在后期我什至想获得客户的 属性 值。
IF theValue:WHATS-THE-TYPE = "Customer" THEN
RETURN DYNAMIC-PROPERTY(theValue, "Name").
OpenEdge 11.6 引入了反射 API 允许查询。
DEFINE VARIABLE oProperties AS Progress.Reflect.Property NO-UNDO EXTENT .
oProperties = oObject:GetClass():GetProperties() .
DO i = 1 TO EXTENT (oProperties):
MESSAGE oProperties[i]:Name oProperties[i]:DataTypeName .
END.