私はFind.dllというメソッドを持つABCというクラスを持っているTest.dllというdllを持っています。 今、私はTestBというプロジェクトがあり、TestBにTest.dllのリファレンスを追加しました。 TestBでタイプXYZを見つけようとしている場合は、Test.ABC.FindTYpe()
から、TypeNotLaoded Exception
という例外がスローされます。他のアセンブリにアセンブリを追加する方法は?
問題を見て、解決方法を教えてください。
私はFind.dllというメソッドを持つABCというクラスを持っているTest.dllというdllを持っています。 今、私はTestBというプロジェクトがあり、TestBにTest.dllのリファレンスを追加しました。 TestBでタイプXYZを見つけようとしている場合は、Test.ABC.FindTYpe()
から、TypeNotLaoded Exception
という例外がスローされます。他のアセンブリにアセンブリを追加する方法は?
問題を見て、解決方法を教えてください。
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());
}
。
コードはテストされていませんが、使用する必要があるクラスとメソッドの検索に役立ちます。
おそらく、見つけようとしているタイプXYZがロードされていないか、アプリケーションがアセンブリを探すパスに存在しません。 Test.dllとABCは、Test.dllにプロジェクトの参照を追加したものでなければなりません。
FindTypeのコードはどのように見えますか? 型名(文字列)から型を作成していると仮定すると、 "local"型名だけでなく、 "assembly qualified"型名を指定する必要があります。
Type testB = Type.GetType("TestB.XYZ, TestB");
むしろ
Type testB = Type.GetType("TestB");
よりも、あなたには、いくつかのより多くの詳細を与えることができ、いくつかのコードスニペットのように:あなたが作成しようとしているタイプを取得するには?
こんにちは、ウルの時間のおかげで、私は解決策を得た... –