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