1

多数のコントローラーとメソッドを含む Web API プロジェクトを考えてみましょう。この API は、データ転送オブジェクト パターンを使用して、クライアントからデータを取得し、結果を返します。これらの DTO オブジェクトは、API の観点から見た実装の詳細であるため、internal外部コードがそれらを表示または呼び出すことができないようにマークされています。CA1811 警告の dtos のプロパティに抑制属性を配置する必要がないようにするにはどうすればよいgetですか?set

現在、クラスが「読み取り」dto、「書き込み」dto、またはその両方であるかどうかに応じて、各プロパティの警告を抑制する必要があります。このような場合、json シリアライザーはプロパティに依存するため、プロパティが存在する必要があります。

クラスをマークしてクラスを開きたくありません。これはpublic、API プロジェクトだけが知っておくべき何かを公開しているためです。静的ツールは、一部のクラスまたはフィールドが使用されていないかどうかを判断できません。それ以外の場合は、外部からそれらを使用している可能性があります。

DTO を別のプロジェクトに移行して、そこで警告を無効にすることもできますが、それらpublicを再度マークするか、または を追加しInternalsVisibleToて、api プロジェクトがそれらを認識できるようにする必要があります

4

1 に答える 1

0

おそらく、セッターを「保護された内部」にすることができます。これにより、他のアセンブリで(理論的には)それらの DTO を継承するクラスにアクセスできるようになります。または、ディレクティブを介して、またはプロジェクトに対してグローバルにこれらの警告を無効にします。

于 2015-03-28T03:10:24.613 に答える