2

共通言語仕様への準拠を許容できるエッジ ケースが存在することを知りたいと思っていました。CLSCompliantAttribute他の言語からアクセスするつもりがない場合でも、 によって主張されている信条は優れたベスト プラクティスであると思います。

YAGNIがベスト プラクティスよりも優れているケースに遭遇したことがありますか、または知っていますか?

4

3 に答える 3

5

「[原文ママ] CLS に準拠していることに、どのような用途がありますか?」

中程度の信頼ClickOnce、共有ネットワーク ドライブからの実行、ドメイン設定のゲスト プロファイルなど。CLS コンプライアンスに違反すると、コードを実行できないセキュリティ状況が多数あります。

私は個人的に、ユーザーが共有ネットワーク ドライブからアプリケーションを実行しようとしても、ローカル管理者がセキュリティ プロファイルで非 CLS 準拠のアプリケーションを強制終了したために実行できない状況を数多く見てきました。

一般に、問題を回避する方法は通常あります。上記のコメントとは逆のアプローチをとりますが、なぜそれを壊すのですか? あなたはマネージド コードを書いていますが、なぜ意図的にアプリケーションを制限したいのでしょうか?

API アセンブリまたはコンポーネントを構築している場合は、常にそれらに準拠する必要があります。中程度の信頼度から実行しようとすると、あまりにも多くのサードパーティ製コンポーネントが簡単な方法で実行され、壊れているというフラグが立てられます。場合によっては、これが実行できない唯一の理由です。ガイドラインに従うのにもう少し時間がかかっていれば、ユーザーはコンポーネントの使用方法に制限されないでしょう。

于 2009-09-24T21:29:29.490 に答える
4

まあ、属性の "params" 配列は魅力的な場合があります (ただし、準拠していません)。ただし、可能な限り CLS 準拠のアプローチを使用することをお勧めします。

于 2009-02-12T08:53:41.723 に答える
3

そのような機能を必要とする、またはパフォーマンス上の理由から、レガシー レイヤーを使用する場合、製品内部のライブラリは許容できると思います。

ただし、これらの非準拠インターフェイスは、より高いレベルで再カプセル化する必要があります。

于 2009-02-12T08:52:59.913 に答える