- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#でインターフェースのプロパティのアクセス修飾子)
C#でインターフェースのプロパティのアクセス修飾子
このQ&Aのポイント
- C#でインターフェースに定義した抽象プロパティで、アクセシビリティまで設定したい場合、どのように記述すればよいかについて説明します。
- 抽象プロパティにアクセシビリティ修飾子を設定することはできないため、サブクラスでの実装や自前のアクセッサを使う必要があります。
- APIからの利用を制限し、プロパティのアクセス修飾子を異なる設定にしたい場合、自前のアクセッサを作成する必要があります。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
「インターフェイス」に定義するものは公開するもの、つまりアクセシビリティは常にpublicですからこれはどーしよーもありません。 代替案としては、インターフェイスではなく抽象クラスに定義して、その抽象プロパティのモディファイア(set)にうっかり飛んできたら例外でも飛ばすようにしておくなんてのはどうでしょうか。
その他の回答 (1)
- todo36
- ベストアンサー率58% (728/1234)
回答No.1
interfaceを二つ用意する public interface IHelloGet{string Hello { get;}} internal interface IHelloGetSet{string Hello { get; set;}}
質問者
お礼
なるほど、そういう手もありましたか。 今回はコミットできませんが、今後の肥やしとさせていただきます。 ご回答いただき、ありがとうございました。
お礼
確かにおっしゃる通りです。 自分が定義を勘違いしていたふしがあったようです。 そもそも私が「メソッドでやるしか」とかなんとかのたまっていましたが、 そもそもメソッドでやっても同じ事でした。 代替案をいただきます。 インターフェイスと抽象クラスとで定義を分けて、 万が一の予期しない使用に対してはアサートで落とすという方向で検討しようと思います。 ご回答ありがとうございました。