gpt4 book ai didi

c# - InvalidCastException,上下文错误?

转载 作者:行者123 更新时间:2023-11-30 22:19:43 38 4
gpt4 key购买 nike

我有一个执行数据转储的 exe。 exe 将根据配置动态获取 DLL,并将类对象传递给它。 DLL 有一个用它编译的此类的副本,并且可以在调试下看到数据,没有问题作为对象。但是,当我尝试将它转换到类里面时,它告诉我它不能因为上下文。我确定我有时会忽略一些事情。

错误:

[A]MyClass cannot be cast to [B]MyClass. Type A originates from 'MyExe, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'Default' at location 'C:\MyPath\MyExe.exe'. Type B originates from 'MyDLL, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' in the context 'LoadNeither' at location 'C:\MyPath\MyDLL.dll'.

执行代码:

Object[] param = new Object[] { MyClass };
MethodInfo m = type.GetMethod("MyMethod");
reader = (SqlDataReader)m.Invoke(obj, param);

动态链接库代码:

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;
}

最佳答案

The DLL has a copy of this class compiled with it

基本上不要那样做。您应该在一个 程序集中具有该类型,并且只有一个程序集。就 CLR 而言,这些是完全不同的类型。

您可能希望拥有一个插件和您的应用程序都可以引用的公共(public)库。或者您可以让您的插件引用应用程序可执行文件并将类型保留在那里。

关于c# - InvalidCastException,上下文错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15412552/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com