我有一个执行数据转储的 exe。exe 将根据配置动态获取 DLL,并将类对象传递给它。DLL 有一个用它编译的这个类的副本,并且可以看到数据,在调试下,作为一个对象没有问题。但是,当我尝试将其转换为班级时,它告诉我由于上下文原因它不能。我确信我有时会忽略一些事情。
错误:
[A]MyClass 不能转换为 [B]MyClass。类型 A 源自 'MyExe, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 在位置 'C:\MyPath\MyExe.exe' 的上下文 'Default' 中。类型 B 源自 'MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' 在位置 'C:\MyPath\MyDLL.dll' 的上下文 'LoadNeither' 中。
执行代码:
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;
}