2

そのため、StyleCop ルールを使用してすべてのコードを修正していますが、頻繁にヒットしているのは SA1401 FieldsMustBePrivate です。私はそれを理解しています。. . 一種の。私たちが常に行ってきたことの 1 つは、変数を保護し、プロパティを提供することです。これは、基本クラスから継承するクラスが変数自体にアクセスできるようにするためですが、継承チェーンの外側のクラスはプロパティを介して値にアクセスする必要があります。

これは、継承チェーンの外部のクラスが値を変更できないように、プロパティにセッターを提供せずに基本クラスが継承されたクラスの変数の値を設定する必要がある場合に特に便利です。SA1401の問題を「修正」することで私が見つけたのは、プロパティ値を設定する必要があるということです。これは、プロパティ値を継承されたクラスに設定する必要があるためです。

基本クラスに値を設定できる保護されたプロパティを作成してから、値を設定できない「新しい」パブリック プロパティを作成できると思いますが、その「新しい」パブリックを作成する必要があります。継承されたすべてのクラスのプロパティ。

考え?

4

1 に答える 1

6

同時に両方を行うことはできません:

public SomeType SomeProperty { get; protected set; }

プロパティはパブリックに取得可能ですが、クラスとそのサブクラスによってのみ設定可能です。

于 2012-07-26T14:42:52.857 に答える