设置这种情况,一个包中有多个库需要访问其自身库中的常用类。此类被导出,并包含私有字段,该私有字段只能由包的库在内部访问。因为不建议使用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
}