如何检查界面属性的可见性?

时间:2010-10-26 17:29:19

标签: delphi rtti

我已经开始在Delphi 2010中编写Web服务并进行单元测试以确保它们按计划运行。我传递的代码的单元测试,但是当作为服务调用时(即通过SoapUI),一个Web服务方法没有返回值。经过几个小时的搜索代码后,我发现这是因为我的返回对象上的属性不在界面的已发布部分中;他们在公共部门。

我的单元测试是否有办法检查对象的变量可见性,以便将来可以避免这个问题?我试图用RTTI找到一种方法但却找不到任何东西。

2 个答案:

答案 0 :(得分:6)

您可以通过尝试访问该属性的RTTI来确定是否已声明属性已发布。公共财产没有RTTI,已发布的财产。

这样的事情:

if (GetPropInfo(myobject, "PropertyName") != null) then 
    // it's published...

有关RTTI的更多信息,请参阅Brian Long的文章:http://www.blong.com/Conferences/BorConUK98/DelphiRTTI/CB140.htm

答案 1 :(得分:3)

你可以很容易地使用RTTI。您可以在TypInfo单元中使用经典的RTTI函数GetPropInfo。如果它返回 nil ,则不存在该名称的已发布属性。或者您可以使用扩展的RTTI进行查找并查看Visibility属性,该属性将告诉您声明的可见性级别。