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

Sam*_*m M 2 delphi rtti

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

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

dth*_*rpe 6

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

像这样的东西:

if (GetPropInfo(myobject, "PropertyName") != null) then 
    // it's published...
Run Code Online (Sandbox Code Playgroud)

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

  • 在D2010 +中,未发布的项目现在在新的增强型RTTI系统(Rtti.pas)中公开.旧式RTTI(TypInfo.pas)仍然只处理已发布的项目,是(BTW,有一个IsPublishedProp()函数可用). (2认同)