データダンプを行うexeファイルがあります。exeは、構成に基づいてDLLを動的に取得し、クラスオブジェクトを渡します。DLLには、このクラスのコピーがコンパイルされており、デバッグ中のデータをオブジェクトとして問題なく表示できます。しかし、それをクラスにキャストしようとすると、コンテキストが原因でキャストできないと表示されます。私は時々それをしているので、私は何かを見落としていると確信しています。
エラー:
[A]MyClassを[B]MyClassにキャストすることはできません。タイプAは、場所「C:\ MyPath \MyExe.exe」のコンテキスト「デフォルト」の「MyExe、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=null」に由来します。タイプBは、場所「C:\ MyPath \MyDLL.dll」のコンテキスト「LoadNether」の「MyDLL、Version = 1.0.0.0、Culture = neutral、PublicKeyToken=null」に由来します。
EXEコード:
Object[] param = new Object[] { MyClass };
MethodInfo m = type.GetMethod("MyMethod");
reader = (SqlDataReader)m.Invoke(obj, param);
DLLコード:
public SqlDataReader MyMethod(Object param)
{
SqlDataReader reader = new SqlDataReader();
Type t = param.GetType(); //Returns MyClass
if (param is MyClass) //Returns false
reportItem = (MyClass)param; //Never executes
MyClass reportItem = (MyClass)param; //InvalidCastException
//other code here, pulling data
return reader;
}