加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

访问Delphi类的严格保护属性?

发布时间:2020-12-15 10:06:06 所属栏目:大数据 来源:网络整理
导读:我需要访问严格的保护属性,因为我需要创建一个验证(基于此属性的值)以避免错误. (我没有具有此属性的第三方类的源代码)只有我有类(接口)和dcu的定义(所以我不能更改属性可见性).问题是存在一种访问严格保护财产的方法? (我真的读了 Hallvard Vassbotn Blog,
我需要访问严格的保护属性,因为我需要创建一个验证(基于此属性的值)以避免错误. (我没有具有此属性的第三方类的源代码)只有我有类(接口)和dcu的定义(所以我不能更改属性可见性).问题是存在一种访问严格保护财产的方法? (我真的读了 Hallvard Vassbotn Blog,但是我没有找到关于这个特定主题的东西.)

解决方法

这个类帮助器示例编译好:
type
  TMyOrgClass = class
  strict private
    FMyPrivateProp: Integer;
  strict protected
    property MyProtectedProp: Integer read FMyPrivateProp;
  end;

  TMyClassHelper = class helper for TMyOrgClass
  private
    function GetMyProtectedProp: Integer;
  public
    property MyPublicProp: Integer read GetMyProtectedProp;
  end;

function TMyClassHelper.GetMyProtectedProp: Integer;
begin
  Result:= Self.FMyPrivateProp;  // Access the org class with Self
end;

有关课堂助手的更多信息可以在这里找到:should-class-helpers-be-used-in-developing-new-code

更新

从Delphi 10.1柏林开始,使用类助手访问私人或严格的私人会员不行.它被认为是一个编译器错误,并已被更正.仍然允许访问受保护或严格保护的成员与类帮助者.

在上面的例子中,说明了对私有成员的访问.下面显示了访问严格受保护成员的工作示例.

function TMyClassHelper.GetMyProtectedProp: Integer;
begin
  Result:= Self.MyProtectedProp;  // Access strict protected property
end;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读