名前空間tool1にcustomTypeという名前のクラスがあります。カスタムタイプを返す関数を動的に呼び出すときにキャストエラーが発生する
私は、次のように "customType"のリストを返すルーチン1という名前の他のメソッド(名前空間tool1のclass1)を使用しています。
このコードは、エラーなしでcustomtypeのリストを返します。
List<tool1.class1.customType> result1 = new List<tool1.class1.customType>();
result1 = tool1.class1.routine1(argsAsStr, p_values);
次のコードでもエラーなしで正常に動作し、次のように、オブジェクトを返します。しかし
Assembly tool1 = Assembly.LoadFrom(@"C:\tool1\tool1\bin\Debug\tool1.dll");
Type type = tool1.GetType("tool1.class1");
object instance = Activator.CreateInstance(type);
object[] parametersArray = new object[] { argsAsStr, p_values};
MethodInfo method = type.GetMethod("routine1");
object result2 = method.Invoke(instance, parametersArray);
、ときに私オブジェクトではなくリストとして結果をキャストしようとすると、キャストエラーが表示されます。
Assembly tool1 = Assembly.LoadFrom(@"C:\tool1\tool1\bin\Debug\tool1.dll");
Type type = tool1.GetType("tool1.class1");
object instance = Activator.CreateInstance(type);
object[] parametersArray = new object[] { argsAsStr, p_values};
MethodInfo method = type.GetMethod("routine1");
List<tool1.class1.customType> result2 = method.Invoke(instance, parametersArray)
エラーメッセージ:
Error: Cannot implicitly convert type 'object' to 'System.Collections.Generic.List<tool1.class1.customType>'.
An explicit conversion exists (are you missing a cast?)
どのように私はinvokeメソッドの後にうまくいけば、リターン「ではない」オブジェクトが、「customTypeのリスト」、この鋳造エラーを克服し、できますか?ご関心と貢献のために事前に
おかげで、
Aykut
あなたは、たとえば、 "tool1.class1下" で*正確に*何を意味するのですか?あなたが[mcve]を提供するなら、あなたを助けるほうが簡単でしょう。 (私はまた、.NETの命名規則に従うことを強くお勧めします) –
チップのJon Skeetに感謝します。私はそれを行い、それに応じて質問を編集します。 –