- PR -

呼び出し元のクラスをロード?

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-15 21:37
引用:

頭脳パンさんの書き込み(2006-09-15 10:55)より:
>相変わらず、何が問題なのかよく分からないんですが。。。 ;-p
すいません。私の説明不足で論点ではないところで
燃えあがってしまいました。


根本的なところを間違っていませんか?
ここは「会議室」であって「質問部屋」でありません。
あなたの疑問を解決するための場所ではなく、あなたが提供してくださった情報に対して、お礼として情報を提供するところです。
自分の用事がするんだからといって、勝手に閉じないでください。


引用:

質問は、細かい構成や仕様など抜きにして↓なだけなんです。
>そもそもの質問は、c.dllがロードするんだけど、
>a.exeとかにあるんだから、ロードしなくてもどうにかならないのかなぁ〜?
>というものです。そこでインスタンスを渡せばとなったわけですが
>インスタンスを渡すのは仕様を満たせない。という感じです。
>元々、私の理解不足でa.exeにあるんだからActivator.CreateInstance
>ぐらいでなんとかならんかなぁと考えていました


根本的なことを忘れていませんか?
「知らないものは使えない」のです。
c.dll をビルドしたときには、 a.exe のことを教えていないでしょう?
だったら、a.exe の中のことを、どこかで使うことは出来ません。
使う前に教えてやらないと、使えないのです。
だから、a.exe からインスタンスを渡しても、c.dll では使えません。
抽象クラスの宣言は c.dll の中にあっても、
本当の宣言は a.exe の中にあるため、
c.dll では、抽象クラスで定義されているものしか使えません。
この辺がどれくらい理解できているのか、このスレッドの内容からはわかりません。
コンパイル時に解決されるべきところを実行時にまで引き延ばしているということを、理解していないのでしょう。

 で、その認識のずれゆえに生じる説明であって、「論点ではないところ」ではありません。
むしろ、問題の根本的なところです。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2006-09-16 00:46
単にアセンブリとかきちんと指定しないで
CreateInstanceしようとしてるだけだと思う…
ていうかインスタンス化しようとしてるところが
どうなっているか書けば何がまずいかすぐ分かると思います。

あと、やたらLoadFrom使おうとしてるような感じですけど、
LoadFromは本当にパスでアセンブリを指定する必要がない限り、
使わなくていいと思うんですけどね。
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2006-09-16 11:07
引用:

Jittaさんの書き込み (2006-09-15 21:37) より:

抽象クラスの宣言は c.dll の中にあっても、
本当の宣言は a.exe の中にあるため、
c.dll では、抽象クラスで定義されているものしか使えません。
この辺がどれくらい理解できているのか、このスレッドの内容からはわかりません。
コンパイル時に解決されるべきところを実行時にまで引き延ばしているということを、理解していないのでしょう。


多分問題点はここでしょうね。
抽象クラスの設計が悪いのか、
そもそも抽象クラスを雛型として定義しているだけで
c.dllの中から使用してさえいないのか
スレ主さんはもう見ないだろうから真相は不明のままですが・・
(余談:クラス図とか書き込む良い方法ないですかね?)
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2006-09-16 11:45
引用:

kumaさんの書き込み (2006-09-16 11:07) より:
(余談:クラス図とか書き込む良い方法ないですかね?)


本題とは関係ありませんが、「確か、何かあったなぁ」という事でメモ書き
DICON

# 一時、書くソース全てにこんな感じでクラス図書いてた事あったなぁ(汗)
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-17 21:05
引用:

冬寂さんの書き込み (2006-09-16 11:45) より:
引用:

kumaさんの書き込み (2006-09-16 11:07) より:
(余談:クラス図とか書き込む良い方法ないですかね?)


本題とは関係ありませんが、「確か、何かあったなぁ」という事でメモ書き
DICON

# 一時、書くソース全てにこんな感じでクラス図書いてた事あったなぁ(汗)


おもしろい!!
特に、テキストファイルに出力できるってところが!!
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-09-18 23:09
引用:

kumaさんの書き込み (2006-09-16 11:07) より:

多分問題点はここでしょうね。
抽象クラスの設計が悪いのか、
そもそも抽象クラスを雛型として定義しているだけで
c.dllの中から使用してさえいないのか
スレ主さんはもう見ないだろうから真相は不明のままですが・・
(余談:クラス図とか書き込む良い方法ないですかね?)


抽象クラスの設計が悪いというか、
a.exe から c.dll を呼び出すのに、
a.exe の中に、プラグインされる機能(クラス)がある、という設計が、よくわからんです。
ということは、a.exe と書いているけど、実は a1.exe, a2.exe, a3.exe, ... なんじゃなかろうか、とか思ったり。
a.exe から bN.dll そして c.dll で、bN.dll の中に、実装されていたりいなかったり、というのは、ある程度わかるんだけど。

 さらに考えると、クラス ライブラリを使用しやすいように、という設計方針が、そもそもの間違いじゃなかろうか?
アプリケーションや、各プロジェクトの使い勝手を良くするためにクラス ライブラリを作るので、その作り手が、他の人の使い勝手を考えて作るんじゃなかろうか?
 ということは、クラス ライブラリがプラグインを読み込んで、a.exe や bN.dll は、c.dll で定義された抽象クラスだけにアクセスすればいいように、本当の定義を知らなくてもプラグイン機能を使えるように設計するのが、本筋なんじゃなかろうか?

やっとおかしいと思っていたところが見えた

[ メッセージ編集済み 編集者: Jitta 編集日時 2006-09-18 23:10 ]

スキルアップ/キャリアアップ(JOB@IT)