- PR -

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

投稿者投稿内容
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-09-13 18:14
コンソールアプリ、あるいはクラスライブラリから呼び出される
クラスライブラリがあります。

呼ばれるクラスライブラリで、呼び元のクラス名を
指定してインスタンス生成を行います。

この場合でも、Assembly.LoadFrom(アセンブリ名)をしないといけないのでしょうか?

テスト結果は、しないと動きません。

LoadFromに、コンソールのexeファイル名か、クラスライブラリのdll名を指定しています。

根本的にわかっていないのかもしれませんが、呼び元のクラスをなぜ
ロードしないといけないのでしょうか?

感覚的には、ロードせず、Activator.CreateInstanceでいけそうなのに。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-09-13 18:16
LoadFromなんて普通使う?>有識者各位
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-09-13 18:20
Loadを使うという意味ですか?

それとも、ロード自体ですか?

一応、やろうとしていることは、実行時までアセンブリ名のわからない
クラスの実行です。(まぁ、プラグイン機能の実装です)
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-09-13 18:41
引用:

コンソールアプリ、あるいはクラスライブラリから呼び出される
クラスライブラリがあります。



「呼び出し元」だの「呼び出されるライブラリ」だの言われてもよく分かんないです。
もーちっと分かりやすく状況を説明してもらえませんか?
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-09-13 18:59
>もーちっと分かりやすく状況を説明してもらえませんか?
申し訳ないです。

コンソールアプリ(a.exe) →(呼び出し)→ クラスライブラリ(c.dll)

c.dllにて、a.exeに含まれるHogeクラスを使用したい。

あるいは、

コンソールアプリ(a.exe) →(呼び出し)→ クラスライブラリ(b.dll) →(呼び出し)→ クラスライブラリ(c.dll)

c.dllにて、b.dllに含まれるHogeクラスを使用したい。

のような関係です。

[ メッセージ編集済み 編集者: 頭脳パン 編集日時 2006-09-13 19:00 ]
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2006-09-13 19:14
引用:

頭脳パンさんの書き込み (2006-09-13 18:59) より:
コンソールアプリ(a.exe) →(呼び出し)→ クラスライブラリ(c.dll)

c.dllにて、a.exeに含まれるHogeクラスを使用したい。

あるいは、

コンソールアプリ(a.exe) →(呼び出し)→ クラスライブラリ(b.dll) →(呼び出し)→ クラスライブラリ(c.dll)

c.dllにて、b.dllに含まれるHogeクラスを使用したい。


Hogeは名前だけ一緒の別のクラスなんですか?
何をやりたくてそんなことになるのか、いまいち想像がつきませんが…

まあ、呼び出し側からHogeとやらのインスタンスを渡すのが一番簡単でしょう。
あえて呼び出される側でごちゃごちゃ複雑なことをする必要がありますか?
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-09-13 19:24
>まあ、呼び出し側からHogeとやらのインスタンスを渡すのが一番簡単でしょう。
>あえて呼び出される側でごちゃごちゃ複雑なことをする必要がありますか?

Hogeはプラグインクラスで、どこに作成されるかはクラスライブラリを
使用する側の自由にしています。(今のところ)

また、プラグインクラスは使い方が少しやっかいで、
呼び出し側でインスタンス化しないで、クラスライブラリで
なんとかしたいという理由もあります。

なので、Hogeクラスは呼び出し側でインスタンス化して渡すことは考えていません。
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2006-09-13 19:44
引用:

頭脳パンさんの書き込み (2006-09-13 18:59) より:
>もーちっと分かりやすく状況を説明してもらえませんか?
申し訳ないです。

コンソールアプリ(a.exe) →(呼び出し)→ クラスライブラリ(c.dll)

c.dllにて、a.exeに含まれるHogeクラスを使用したい。

あるいは、

コンソールアプリ(a.exe) →(呼び出し)→ クラスライブラリ(b.dll) →(呼び出し)→ クラスライブラリ(c.dll)

c.dllにて、b.dllに含まれるHogeクラスを使用したい。

のような関係です。

[ メッセージ編集済み 編集者: 頭脳パン 編集日時 2006-09-13 19:00 ]


c.dllを使用する際、必ずb.dll若しくはa.exeを必要とさせたいのですか?
それともc.dllを呼び出す際は必ずHogeクラスを新しくコーディングさせたいのですか?
クラス図を描いてパッケージ単位で括って眺めてみてください。

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