2009-07-08 9 views
3

私はFind.dllというメソッドを持つABCというクラスを持っているTest.dllというdllを持っています。 今、私はTestBというプロジェクトがあり、TestBにTest.dllのリファレンスを追加しました。 TestBでタイプXYZ​​を見つけようとしている場合は、Test.ABC.FindTYpe()から、TypeNotLaoded Exceptionという例外がスローされます。他のアセンブリにアセンブリを追加する方法は?

問題を見て、解決方法を教えてください。

答えて

2

FindType()のコードを投稿する必要があります。私の推測では、あなたは何かをしているということです。

System.Reflection.Assembly.GetExecutingAssembly().GetTypes() 

検索対象の種類の一覧を検索し、TestB.dllの種類がTest.dllにないため、項目が見つかりません。

代わりにこのようなものを試してみるとよいでしょう。あなたがのAppDomainと奇数何をやっている場合を除き、あなたのプログラムにロードされたすべての種類のリストになり、 - あなたの現在のアプリケーションドメインにロードされたすべての種類を与える必要があり

/// <summary> 
/// Returns all types in the current AppDomain 
/// </summary> 
public static IEnumerable<Type> LoadedType() 
{ 
    return AppDomain 
     .CurrentDomain 
     .GetAssemblies() 
     .SelectMany(assembly => assembly.GetTypes()); 
} 

コードはテストされていませんが、使用する必要があるクラスとメソッドの検索に役立ちます。

0

おそらく、見つけようとしているタイプXYZがロードされていないか、アプリケーションがアセンブリを探すパスに存在しません。 Test.dllとABCは、Test.dllにプロジェクトの参照を追加したものでなければなりません。

0

FindTypeのコードはどのように見えますか? 型名(文字列)から型を作成していると仮定すると、 "local"型名だけでなく、 "assembly qualified"型名を指定する必要があります。

Type testB = Type.GetType("TestB.XYZ, TestB"); 

むしろ

Type testB = Type.GetType("TestB"); 

よりも、あなたには、いくつかのより多くの詳細を与えることができ、いくつかのコードスニペットのように:あなたが作成しようとしているタイプを取得するには?

+0

こんにちは、ウルの時間のおかげで、私は解決策を得た... –

関連する問題