- PR -

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

投稿者投稿内容
kuma
大ベテラン
会議室デビュー日: 2004/02/25
投稿数: 110
投稿日時: 2006-09-14 19:14
引用:

頭脳パンさんの書き込み (2006-09-14 08:56) より:
使い手にプラグインを触らせたくない大きな3つ目の理由がありました。

仕様が、クラスライブラリにて、DBに設定されている設定
(プラグイン使用有無、クラス名等)に従って処理を行う。

というのがあります。ここは私の力では変更できないところです。
(但し、不可能であったり、致命的な欠陥があった場合は変更可能)

よって、呼び出し側でインスタンス生成して渡すってことが
選択できないです。



この展開が理解不能です。
c.dllには抽象クラスがあるんですよね?
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-09-14 20:03
>c.dllには抽象クラスがあるんですよね?
そうです。
この抽象クラスを継承したクラスを作成してもらって
アセンブリ名、クラス名をDBに登録してもらいます。
そして、c.dllでそのクラスを名前で呼び出します。

>使い手にプラグインを触らせたくない
私の言い方が誤解を招いてますかね。プラグインは作ってもらって
インスタンス化、メソッドのコール等をさせない方針です。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-09-14 20:47
「プラグイン」という「ソフトウェア」の用語と「クラスライブラリ」という「プログラミング」の用語を同時に使っているから私は混乱しています。

「Hoge クラスを使いたい」が「Hoge クラスの定義を使いたい」なのか「Hoge クラスのインスタンス」を使いたいのか分かりません。

「プラグイン」が未だにどれの事を言っているのか分かりません。

私が辛うじて理解しているのは以下です。間違えていたら仰ってください。
インスタンス云々の話はとりあえず保留します。

・a.exe
呼び出し側。メインアプリケーション?これは、c.dll の何かを呼び出す。

・b.dll
クラスライブラリ。c.dll の何かを呼び出す。

・c.dll
クラスライブラリ。Hoge クラスを扱いたい。

・Hoge クラス
定義はどこに?

・抽象クラス
c.dll に定義がある。

・プラグイン(どれ?)
誰かが自由に作れる。どこがロードする?c.dll の「抽象クラス」を実装する。

私が疑問に思っているのは、Hoge クラスの「定義」はどこでされているかです。Hoge クラスのインスタンスはどうでもよいのです。
そしてプラグインはどれの事ですか?

_________________
囚人のジレンマな日々
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-09-14 23:36
>「Hoge クラスを使いたい」が「Hoge クラスの定義を使いたい」なのか「Hoge クラスの>インスタンス」を使いたいのか分かりません。
Hogeクラスのインスタンスを、名前をDBから取ってきて使いたいのです。

>・Hoge クラス
>定義はどこに?
a.exeか、b.dllあるいは、別途作成したDLL。
(希望としてはどこにつくられていても可能)
ただ、別途作成するように決めてしまおうかと思っています。

>・プラグイン(どれ?)
>誰かが自由に作れる。どこがロードする?c.dll の「抽象クラス」を実装する。
ロードは、c.dllが行います。

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


>私が疑問に思っているのは、Hoge クラスの「定義」はどこでされているかです。
>Hoge クラスのインスタンスはどうでもよいのです。
Hogeクラスの定義は、好きなところ。(c.dll以外)
そしてプラグインはどれの事ですか?
抽象クラスを実装したHogeクラスのことです。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-09-15 10:18
相変わらず、何が問題なのかよく分からないんですが。。。 ;-p

引用:

Hogeクラスのインスタンスを、名前をDBから取ってきて使いたいのです。



アセンブリ名と、実装クラス名が分かればできますよね?
それを行う上で何が問題なのかを、さらに分かりやすく説明してもらえませんか?

勘ですが、抽象クラスを使うのが間違いで、インターフェース使えば解決な気も。
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-09-15 10:55
>相変わらず、何が問題なのかよく分からないんですが。。。 ;-p
すいません。私の説明不足で論点ではないところで
燃えあがってしまいました。

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

仕様でインスタンスを渡すのはNGなら、c.dllがロードするしかない。
そして、ロードするアセンブリは別途作成するように決めてしまった方が良い。
で、ほぼ解決です。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2006-09-15 16:17
引用:

質問は、細かい構成や仕様など抜きにして↓なだけなんです。
>そもそもの質問は、c.dllがロードするんだけど、
>a.exeとかにあるんだから、ロードしなくてもどうにかならないのかなぁ〜?



既に指摘されているような気がしますが、c.dll が「なにを」ロードするんでしょう?
a.exe に「なにが」あるんでしょう?そして、誰が、なにをロードしなくて済むんだろうという話をしていますか?

以前の投稿で書かれていたとしても、スレッド全体を読み返してまで回答するのは(少なくとも私には)苦痛です。

申し訳ないですが、できるだけ読み手に行間を埋めることを強要しないでください。
回答する以前に質問を読み進める気が萎えてしまいます。
頭脳パン
ベテラン
会議室デビュー日: 2003/04/03
投稿数: 89
投稿日時: 2006-09-15 16:31
>以前の投稿で書かれていたとしても、スレッド全体を読み返してまで回答するの
>は(少なくとも私には)苦痛です。

>申し訳ないですが、できるだけ読み手に行間を埋めることを強要しないでください。
>回答する以前に質問を読み進める気が萎えてしまいます。
申し訳ないです。ほんとに。以後、気をつけます。

解決しているのでこのスレッドは閉じることとします。

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