「new」キーワードが派生クラスのメソッドを非表示にする方法を理解しています。ただし、キーワードを使用するインターフェイスを実装するクラスにはどのような影響がありますか?
この例を考えてみましょう。ここでは、プロパティを読み取り/書き込みにすることでインターフェイスを拡張することにしました。
public interface IReadOnly {
string Id {
get;
}
}
public interface ICanReadAndWrite : IReadOnly {
new string Id {
get;
set;
}
}
次に、次のようなことができます。
public IReadOnly SomeMethod() {
// return an instance of ICanReadAndWrite
}
これは悪いデザインですか?ICanReadAndWriteを実装するクラスで問題が発生しますか?
編集:これは私がこのようなことをしたいと思うかもしれない理由 の不自然な例です:
IShoppingCartItemReadWriteを返すファクトリクラスがあるとします。次に、価格を操作したり、変更したりするサービスレイヤーを作成できます。次に、これらのオブジェクトをIShoppingCartItemReadOnlyとして、変更されないある種のプレゼンテーションレイヤーに渡すことができます。(はい、技術的に変更できることはわかっています。これは設計上の問題であり、セキュリティなどではありません)