2

プライベート MethodMirror の単純名と同じシンボルを作成したいと考えています。ただし、Symbol のドキュメントには、新しい Symbol の引数は有効な公開識別子でなければならないと記載されています。Dart エディターを作成しようとするとconst Symbol('_privateIdentifier')、この定数式の評価で例外がスローされることが通知されますが、プログラムは正常に実行され、問題なく使用できます。

void main(){
  //error flagged in dart editor, though runs fine.
  const s = const Symbol('_s');
  print(s); //Symbol("_s");
}

ミラーシステムはシンボルを使用しているようです。

import 'dart:mirrors';
class ClassA{
  _privateMethod(){}
}

void main(){
  var classMirror = reflect(new ClassA()).type;
  classMirror.declarations.keys.forEach(print);
  //Symbol("_privateMethod"), Symbol("ClassA")
}

dart エディターでのドキュメント/エラー フラグは、古い dart アナライザーによるレガシー バグですか? または、将来この公的要件を強制する計画はありますか? 宣言の単純な名前と同じシンボルに縮小される一意の識別シンボルを作成する別の方法はありますか?

4

2 に答える 2