- - PR -
呼び出し元のクラスをロード?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2006-09-14 19:14
この展開が理解不能です。 c.dllには抽象クラスがあるんですよね? | ||||
|
投稿日時: 2006-09-14 20:03
>c.dllには抽象クラスがあるんですよね?
そうです。 この抽象クラスを継承したクラスを作成してもらって アセンブリ名、クラス名をDBに登録してもらいます。 そして、c.dllでそのクラスを名前で呼び出します。 >使い手にプラグインを触らせたくない 私の言い方が誤解を招いてますかね。プラグインは作ってもらって インスタンス化、メソッドのコール等をさせない方針です。 | ||||
|
投稿日時: 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 クラスのインスタンスはどうでもよいのです。 そしてプラグインはどれの事ですか? _________________ 囚人のジレンマな日々 | ||||
|
投稿日時: 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クラスのことです。 | ||||
|
投稿日時: 2006-09-15 10:18
相変わらず、何が問題なのかよく分からないんですが。。。 ;-p
アセンブリ名と、実装クラス名が分かればできますよね? それを行う上で何が問題なのかを、さらに分かりやすく説明してもらえませんか? 勘ですが、抽象クラスを使うのが間違いで、インターフェース使えば解決な気も。 | ||||
|
投稿日時: 2006-09-15 10:55
>相変わらず、何が問題なのかよく分からないんですが。。。 ;-p
すいません。私の説明不足で論点ではないところで 燃えあがってしまいました。 質問は、細かい構成や仕様など抜きにして↓なだけなんです。 >そもそもの質問は、c.dllがロードするんだけど、 >a.exeとかにあるんだから、ロードしなくてもどうにかならないのかなぁ〜? >というものです。そこでインスタンスを渡せばとなったわけですが >インスタンスを渡すのは仕様を満たせない。という感じです。 >元々、私の理解不足でa.exeにあるんだからActivator.CreateInstance >ぐらいでなんとかならんかなぁと考えていました 仕様でインスタンスを渡すのはNGなら、c.dllがロードするしかない。 そして、ロードするアセンブリは別途作成するように決めてしまった方が良い。 で、ほぼ解決です。 | ||||
|
投稿日時: 2006-09-15 16:17
既に指摘されているような気がしますが、c.dll が「なにを」ロードするんでしょう? a.exe に「なにが」あるんでしょう?そして、誰が、なにをロードしなくて済むんだろうという話をしていますか? 以前の投稿で書かれていたとしても、スレッド全体を読み返してまで回答するのは(少なくとも私には)苦痛です。 申し訳ないですが、できるだけ読み手に行間を埋めることを強要しないでください。 回答する以前に質問を読み進める気が萎えてしまいます。 | ||||
|
投稿日時: 2006-09-15 16:31
>以前の投稿で書かれていたとしても、スレッド全体を読み返してまで回答するの
>は(少なくとも私には)苦痛です。 >申し訳ないですが、できるだけ読み手に行間を埋めることを強要しないでください。 >回答する以前に質問を読み進める気が萎えてしまいます。 申し訳ないです。ほんとに。以後、気をつけます。 解決しているのでこのスレッドは閉じることとします。 |