Voici la situation: J'utilise ILMerge pour fusionner un ensemble & toutes ses références dans 1 fichier .dll à l'aide this method (custom.dll
). J'ai une application qui charge dynamiquement cet assembly à l'exécution (program.exe
). Les deux ensembles d'application & utilisent une bibliothèque commune (common.dll
). La classe abstraite ClassX
est définie dans common.dll
tandis que la mise en œuvre ClassY
est définie dans custom.dll
. Lorsque program.exe
tente de charger ClassY à partir de custom.dll
, il lance l'exception:C# ILMerge Impossible de jeter l'objet de type « Classy » taper « ClassX »
Impossible de convertir un objet de type 'ClassY' en type 'ClassX'.
Le code est comme ceci, mais foo
est chargé dynamiquement plutôt qu'un simple nouveau ClassY();
object foo = new ClassY();
ClassX bar = (ClassX)foo;
Quelqu'un a-t-il une idée de pourquoi il ferait cela? ClassY
implémente définitivement ClassX
, toutes les versions d'assemblage/bibliothèque sont exactement les mêmes.