
お世話になります。
C#でインターフェースに定義した抽象プロパティで、アクセシビリティまで設定したいです。
例として抽象プロパティHelloのgetをpublic、setをinternalに設定したい場合、次の様に書くと怒られます。
string Hello { get; internal set; } ←"アクセシビリティ修飾子をインターフェイスのアクセサーで使用することはできません。"
抽象プロパティにsetを定義せず、サブクラスでinternalを設定して実装する分には怒られませんが、
この場合はサブクラスに対してsetの実装を強制できませんし、
当然API(インターフェース)型変数からsetの実装を呼び出せません。
全てのクラスはAPIからのみ利用させたいと考えていて、
かつプロパティのset、getで設定したいアクセス修飾子が異なる様な場合、
プロパティを使用せず自前でアクセッサを作るしか無いのでしょうか?
何かおいしい逃げ方がありましたらご教示いただけるとありがたいです。
宜しくお願いします。
No.2ベストアンサー
- 回答日時:
「インターフェイス」に定義するものは公開するもの、つまりアクセシビリティは常にpublicですからこれはどーしよーもありません。
代替案としては、インターフェイスではなく抽象クラスに定義して、その抽象プロパティのモディファイア(set)にうっかり飛んできたら例外でも飛ばすようにしておくなんてのはどうでしょうか。
確かにおっしゃる通りです。
自分が定義を勘違いしていたふしがあったようです。
そもそも私が「メソッドでやるしか」とかなんとかのたまっていましたが、
そもそもメソッドでやっても同じ事でした。
代替案をいただきます。
インターフェイスと抽象クラスとで定義を分けて、
万が一の予期しない使用に対してはアサートで落とすという方向で検討しようと思います。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Excel(エクセル) エクセル 値をコピペした時に、条件付き書式で塗られた背景色もペーストさせる 2 2023/04/05 17:21
- Visual Basic(VBA) VBAが止まります。 2 2022/09/02 14:02
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:16
- IT・エンジニアリング ActiveReportのdetailをデータセットの自動バインドを使って帳票を出力しています。 1 2023/08/16 07:17
- Visual Basic(VBA) VBA★PDFをPDFアプリで印刷しようと思っていますが上手くゆきません 1 2022/06/06 22:04
- Java javaのクラスの分け方について質問です。 APIの内部用と外部用でクラスを分けたいのですがインター 2 2022/04/26 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB DLLプロジェクトについて
-
Class.forName("org.postgresql...
-
(vba)他のアプリケーションの右...
-
Strutsのバージョンアップによ...
-
C# 「データが失なわれる可能性...
-
デバックログの出し方
-
オブジェクト指向のインターフ...
-
メソッドの引数にクラス名を渡す
-
「継承されたメソッドの可視性...
-
デバッグ時に「Source not found」
-
compareToにおける「自然順序付...
-
スタックで成績表を作るプログ...
-
ファイルパスが取得出来ない(P...
-
ゲッターを使わないで変数にア...
-
interface,extend,implementの...
-
JTextFieldの入力制限
-
レコード件数の表示
-
「タイプ初期化子が例外をスロ...
-
VB.NETでフォーム上にExcelのよ...
-
JSPで<SELECT>の中にDBから持っ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# 「データが失なわれる可能性...
-
「継承されたメソッドの可視性...
-
(vba)他のアプリケーションの右...
-
【C#】クラスのコンストラクタ...
-
VB DLLプロジェクトについて
-
メソッドの引数にクラス名を渡す
-
「ラッパークラス」の存在意義...
-
interface,extend,implementの...
-
c++でのヘッダーファイルの循環...
-
このエラーメッセージの意味を...
-
委譲って何ですか?
-
ゲッターを使わないで変数にア...
-
Javaのインスタンス化の構文の...
-
ファイルパスが取得出来ない(P...
-
ASP.NETでの共通コードの書き方...
-
Commons-Discovery.jarとは?
-
デバッグ時に「Source not found」
-
JTextFieldの入力制限
-
JavaのimplementsをC言語で例え...
-
オーバーライドとラッパーの違い
おすすめ情報