• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C#でインターフェースのプロパティのアクセス修飾子)

C#でインターフェースのプロパティのアクセス修飾子

このQ&Aのポイント
  • C#でインターフェースに定義した抽象プロパティで、アクセシビリティまで設定したい場合、どのように記述すればよいかについて説明します。
  • 抽象プロパティにアクセシビリティ修飾子を設定することはできないため、サブクラスでの実装や自前のアクセッサを使う必要があります。
  • APIからの利用を制限し、プロパティのアクセス修飾子を異なる設定にしたい場合、自前のアクセッサを作成する必要があります。

質問者が選んだベストアンサー

  • ベストアンサー
  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.2

「インターフェイス」に定義するものは公開するもの、つまりアクセシビリティは常にpublicですからこれはどーしよーもありません。 代替案としては、インターフェイスではなく抽象クラスに定義して、その抽象プロパティのモディファイア(set)にうっかり飛んできたら例外でも飛ばすようにしておくなんてのはどうでしょうか。

mamadorusu
質問者

お礼

確かにおっしゃる通りです。 自分が定義を勘違いしていたふしがあったようです。 そもそも私が「メソッドでやるしか」とかなんとかのたまっていましたが、 そもそもメソッドでやっても同じ事でした。 代替案をいただきます。 インターフェイスと抽象クラスとで定義を分けて、 万が一の予期しない使用に対してはアサートで落とすという方向で検討しようと思います。 ご回答ありがとうございました。

その他の回答 (1)

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.1

interfaceを二つ用意する public interface IHelloGet{string Hello { get;}} internal interface IHelloGetSet{string Hello { get; set;}}

mamadorusu
質問者

お礼

なるほど、そういう手もありましたか。 今回はコミットできませんが、今後の肥やしとさせていただきます。 ご回答いただき、ありがとうございました。

関連するQ&A