- - PR -
メソッドの呼出元インスタンスの取得方法がわかりません
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-04-27 17:48
仕様変更した方がローコスト、ということもあると思います。 だいたい、開発はしのげても、運用はどうするんです? | ||||
|
投稿日時: 2006-04-27 17:59
専門外なのでてきとーなこと言って申し訳ないですが……
TestClassに引数ありのコンストラクタを作って呼び出し元のインスタンスなり必要なデータを渡すとか、Form aで直接newせずにファクトリメソッドを用意し、同じインターフェイスを持つ行いたい処理ごとのTestClassを作るとかって無理なんでしょうか? | ||||
|
投稿日時: 2006-04-27 18:08
話の流れからして、呼び出し元の変更も禁止と解釈していますが。。。 | ||||
|
投稿日時: 2006-04-27 19:00
別に禁止しているのではなくて、修正コストを抑えたいということですよね? 正直なところ、普通は引数を追加するのが一番コストがかからないし、私の挙げた方法はかえってコストがかかると思います。 ただ、実際の作り見たら案外うまくいったりしないかな、という超希望的観測で書いてみました。 | ||||
|
投稿日時: 2006-04-27 19:08
まいるどきゃっとさんの方法で得られるのは、
「インスタンスの生成者」ですよね。 「メソッドの呼び出し元」とは違うんでは? | ||||
|
投稿日時: 2006-04-27 19:44
「メソッドの呼び出し元が保持している値によってTestClassのTestClassMethodの挙動を変えたいが、なるべく修正コストを抑えたい」ってのがロニーさんの要望かなと思ってます。 サンプル見ると「メソッドの呼び出し元=インスタンスの生成者」っぽいからインスタンスの生成者を渡せば事がたりるかな?とか、TestClassのインスタンスの生成時に挙動を決めて大丈夫ならファクトリメソッド使えないかな?なんて考えてみました。 # 何となくの思いつきで書いてみましたが、我ながらつっ込みどころ満載ですね。 | ||||
|
投稿日時: 2006-04-27 22:28
外部発注しているところで、外部費用が発生するから。。。ってところかな。
教えていないところから、値を覗き見られたり、書き換えられたら、と〜〜〜〜〜ってもリスキーだと思いませんか? 例えば発注時。「この値段、ちょっと高いなぁ。そうだ、メモリを書き換えてやれ!ほうら、安くなった(笑)」なんてことをしようとしているわけですね。 # いや、ゲームのチートプログラムなんか、そういうことやってますけどね | ||||
|
投稿日時: 2006-04-28 10:56
TestClassはインターフェースを変えられないんですよね。
もしTestClassMethod()の引数だけが変えられないのであれば、TestClassをnewした後にプロパティで「これからTestClassMethod()を呼ぶフォーム」を設定してから呼ぶとか。 TestClass全部のインターフェースが変更不可なら、MainFormにstaticなフィールドを用意して「これからTestClassMethod()を呼ぶフォーム」を保持しておくというのはどうでしょうか。 で、TestClassMethod()の中でそのフィールドから自分を呼び出したフォームを取得する、と。 技術屋ならこんなやりかたはなるべく避けたいと思うでしょうが。 "不吉なにおい"がプンプンしますよね。真っ先にリファクタリングの対象になるでしょう。 何やら大人の事情がありそうなので、とりあえず提案してみました。 |