【发布时间】:2009-10-15 02:08:09
【问题描述】:
情况如下:我正在使用 ILMerge 将程序集及其所有引用合并到 1 个使用 this method (custom.dll) 的 .dll 文件中。我有一个在运行时动态加载这个程序集的应用程序 (program.exe)。应用程序和程序集都使用一个公共库 (common.dll)。抽象类ClassX 在common.dll 中定义,而实现ClassY 在custom.dll 中定义。当program.exe 尝试从custom.dll 加载ClassY 时,它会抛出异常:
无法将“ClassY”类型的对象转换为“ClassX”类型。
代码是这样的,但是foo是动态加载的而不是直接的new ClassY();
object foo = new ClassY();
ClassX bar = (ClassX)foo;
有人知道它为什么会这样做吗? ClassY 绝对实现了ClassX,所有程序集/库版本都完全相同。
【问题讨论】: