現在の実装の欠点:
- 必要な場所でパラメーターを書き換える必要があるため、DRY の原則に違反しています。
- インターフェース実装の1つだけがそれらを必要とする場合でも、インターフェースにすでにこれらのパラメーターを指定する必要があるため、実装の非表示を台無しにします
- それらはインターフェースを汚し、ユーザーはオートコンプリートやドキュメントなどでそれらを目にします。
なぜ言語設計者は、次のようなもっと使いやすいものに反対することにしたのですか?
public void Foo()
{
Console.WriteLine(CallerInformation.File);
}
この実装にはいくつかの機能が欠けていると思います。たとえば、Foo() が IFoo を実装するクラスであり、IFoo が別のアセンブリにある場合、IFoo の呼び出し元はコンパイル時に情報が必要であることをどのように知る必要がありますか? 彼はそれを知ることができません。
しかし!現在の実装として使用できないものを生成するのではなく、これが 1 つの「ビルド ステップ」内でのみ機能することを文書化する方がよいのではないでしょうか?
Q1:現在のように実装されている理由についての公式ドキュメントはありますか?
Q2:他の言語でのより良い解決策を知っている人はいますか?