Я могу использовать отражение для доступа и вызова закрытых методов класса за пределами моей библиотеки. Это ошибка или желаемое поведение? Если это желательно, как я могу сделать невозможным доступ внешнего кода к закрытым членам/методам?
library left;
class Thing {
void _priv(String s) {
print(s);
}
}
library right;
void main() {
var t = new Thing();
var mirror = reflect(t);
mirror.type.declarations.values
.where( (d) => d.isPrivate && d is MethodMirror )
.forEach( (d) {
print(d.simpleName == #_priv); // prints false
mirror.getField(d.simpleName).reflectee("Hello World"); // prints Hello World
});
}