- - PR -
Formsの項目をつかったInterface
1
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-09-08 13:48
msoです。
下記のようなプログラムを作成したのですが、 ポリモフィズムを使ってリファクタリングを行いたいと思ってます。 そこで、問題なのですがTextBoxとかComboBoxのInterface型はあるのでしょうか? MSDNやGoogleで検索をしたのですが、うまく見つけることができませんでした。 何かアドバイスをいただけると幸いです。
| ||||||||||||
|
投稿日時: 2004-09-08 17:15
諸農です。
オブジェクトがコントロール型だったとして そのコントロールのTextプロパティを参照したいって事でしょうか? であれば、Control型でアクセスすればいいのではないでしょうか? _________________ 諸農和岳 Powered by Borland Delphi/C++Builder & Microsoft VS.NET [ メッセージ編集済み 編集者: Jubei 編集日時 2004-09-08 17:18 ] | ||||||||||||
|
投稿日時: 2004-09-09 00:57
msoです。
当初はControlでやろうと思っていたのですが、 Interfaceが良いかと悩んでいました。 やりたいことを再度よく考えていたらControlでも大丈夫だと思います。 ただ、何かの縁だとおもってInterfaceでも対応をしたいって 考えています。 何か見つけたらこっちにまた書き込みます。 ありがとうございました。 | ||||||||||||
|
投稿日時: 2004-09-09 08:16
ん? 例えば、「TextBox クラスについて」というトピックを見ると、このクラスの宣言が書いてあります。
よくわかるのでVB.NETを引用。これを見ると、TextBoxには「インタフェースは実装されていない」ことがわかります。つまり、「Implements」句が無い、ということです。同じページに継承関係も書いてありますから、継承を上にたどると、System.Windows.Forms.Controlまで、インタフェースは使用していないことがわかります。Controlが使用しているインタフェースは「ISynchronizeInvoke」と「IWin32Window」ですが、これらは名前から、同期とWin32API呼び出しのものであろうことが想像されます。 つまり、ご要望のインタフェースは無い、ということです。 では、どうやってインタフェースを使用するかというと、適切なインタフェースを宣言して、そのインタフェースを使用する、TextBoxやComboBoxを継承したクラスを作ることになります。
振る舞い(メソッド)を追加するならともかく、プロパティにアクセスするために、しかも親クラスでアクセスすれば取得できるプロパティにアクセスするために、インタフェースを追加する、つまりコーディングをするのでしょうか。 非常に興味深いので、インタフェースを使おうとした経緯をお聞かせ願えるでしょうか。 |
1