- - PR -
Assembly.GetTypeメソッドでの不具合について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-09-17 21:52
お世話になっております。
現在C#でDLLの動的呼び出しを使ったプログラムを作成中です。 具体的には下記のようなコードになります。 Assembly assembly = Assembly.LoadFrom(dllPath); Type modelType = assembly.GetType(nameSpace); object model = Activator.CreateInstance(modelType, true); dllPathにはDLLへの絶対パス nameSpaceにはDLL内の呼び出したいクラスのネームスペース+クラス名 がそれぞれ入っています。 上記のコードで正常に動作したので、本番環境に移そうと 呼び出し側と呼び出し元のDLLを別フォルダに移行したら 動作しなくなってしまいました。 具体的にはmodelTypeがnullになってしまいます。 assemblyには値が入っているのでDLLへのパス指定は間違っていないと思います。 同じDLLを呼び出していて、ネームスペース+クラス名を指定するロジックも 触っていないのにその箇所の挙動が変わってしまいました。 漠然とした質問で申し訳ないのですが、なぜこのような現象が起こるのか わかる方がいらっしゃったらアドバイス頂けないでしょうか。 よろしくお願いいたします。 |
|
投稿日時: 2003-09-17 23:42
追記です。
呼び出し側のモジュールをコピーして違うフォルダに移して実行しても動作しません。 以下のような構成になっております。 クラスA --インスタンス化--→ クラスB --モジュール呼び出し--→ クラスC 上記の構成で動作が確認できた(クラスCが呼び出せた)のでそのままクラスAをコピーして 違うフォルダにコピーしました。 するとモジュール呼び出しで失敗します。 クラスBとクラスCの間には変更は無いはずなんですが、何が原因なんでしょうか。 |
|
投稿日時: 2003-09-18 08:30
明確な回答ではありませんが...
Assembly.GetTypesで全ての型を取得して、 Type.FullNameで確認してみてはいかがでしょうか? |
|
投稿日時: 2003-09-18 10:22
お返事ありがとうございます。
問題は参照しているアセンブリにあったようです。 フォルダを移行したためにアセンブリが参照できず 期待通りの動作ができなかったようです。 内容が変わってしまいましたので、また新たな スレッドどでご質問させて頂きます。 ありがとうございました。 |
1