如何在不使用“ part of”指令的情况下访问私有字段?

时间:2019-09-22 21:52:59

标签: dart

设置这种情况,一个包中有多个库需要访问其自身库中的常用类。此类被导出,并包含私有字段,该私有字段只能由包的库在内部访问。因为不建议使用part of指令,所以我避免使用它。因此,这就是挑战:如何在不使用part of的情况下从同一包的另一个库访问公共类的私有字段?

这是一个想法:

class PublicClass {
  Object _shouldNotBePublic;
}

class InternalClass extends PublicClass {
  Object get publicInternally => _shouldNotBePublic;
}

它部分解决了问题。 但是现在有一个导出函数

void someFunction(PublicClass param) {
  param._shouldNotBePublic;
}

,其参数为PublicClass,并且需要访问私有的_shouldNotBePublic字段。这正是C ++ friend所做的。 Dart是否有不涉及part of的好的解决方案?

编辑:我暂时使用的解决方法是在与PublicClass相同的库中使用一个简单的未导出函数:

Object getShouldNotBePublic(PublicClass obj) {
  return obj._shouldNotBePublic
} 

0 个答案:

没有答案