質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

1952閲覧

基底クラスのプロパティを派生クラスで再定義したい(Virtual設定無しで)

OlivePopeye.net

総合スコア26

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

2クリップ

投稿2020/04/03 05:10

編集2020/04/03 07:11

いつも参考/活用させていただいております。

早速ですが、表題の件をご教授いただければと思いまして投稿しました。

■やりたいこと
既存DLLを参照し、そこに実装されているクラス(ClassA)を継承したクラス(ClassB)側で
プロパティ値を書き換えたい。

C#

1// ClassA.dll 2public ClassA 3{ 4 public string Name 5 { 6 get { return "Class A!"; } 7 } 8} 9 10// ClassB.dll 11public ClassB : ClassA 12{ 13 // Nameが返す文字列をClassB側で書き換えたい! 14 public override string Name 15 { 16 get { return "Class B!"; } 17 } 18}

としたいのですが、元のClassAのソースコードの変更が出来無いためVirtualに指定出来ないのです。
(ClassA.dllモジュールで提供)

試しに

C#

1 public new string Name 2 { 3 get { return "Class B!"; } 4 }

なら出来るのかなと思ったのですが、ここが読み出されていない感じでした。

こういったことは可能なのでしょうか??

※補足1
継承で対応したい理由としては、継承元の状態を出来る限りそのまま利用したいからです。
本体アプリケーションから参照されるもの(Plug-In)になるのですが、
フィールド変数で元クラスのインスタンスを持ってしてしまうと、
本体アプリケーションから読み出されるMethodをすべてWrapしなければならない。
(継承元クラス(dll)は、自部署開発ではないので、管理が煩雑になってしまう)
→ 継承させて、追加したい部分のみ機能拡張をしたいのです。。。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

BluOxy

2020/04/03 07:00

継承は必須でしょうか。has aではいけないのでしょうか。 public ClassB{ private ClassA a; public string Name { get { return "Class B!" } } public string Hoge { get{ return a.Hoge} } }
hihijiji

2020/04/04 03:03

言語仕様として出来ないので、早いこと諦めて別の手段を探しましょう。
OlivePopeye.net

2020/04/06 01:16

言語仕様として出来ないのであれば、どうしようもないですね。 理解しました!アドバイスありがとうございました。
takabosoft

2020/04/09 02:47

解決したのでしたら質問をクローズしてください。
OlivePopeye.net

2020/04/09 03:23

Closeし忘れてました。。。 指摘ありがとうございます!
guest

回答1

0

自己解決

言語仕様として出来ないということでしたので、本件はCloseしますね。
回答してくださった皆様、協力ありがとうございました。

※今回対応としては、継承しようとしていたクラス(ClassA)のInstanceを
本体アプリケーション側から取得する方法がありましたので、
継承という形ではなく、ClassAインスタンスを参照して機能を拡張する形としました。
・・・リフレクションでPrivateな変数にもアクセスできるので。
クラス設計的にはよくないんでしょうけど。。。やむを得ず。。。

投稿2020/04/09 03:30

OlivePopeye.net

総合スコア26

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問