状況は次のとおりです。ILMergeを使用して、このメソッド(custom.dll
)を使用してアセンブリとそのすべての参照を1つの.dllファイルにマージしています。実行時にこのアセンブリを動的にロードするアプリケーションがあります(program.exe
)。アプリケーションとアセンブリの両方で共通のライブラリ(common.dll
)を使用します。抽象クラスClassX
はで定義されcommon.dll
、実装ClassY
はで定義されcustom.dll
ます。program.exe
ClassYをロードしようとすると、custom.dll
例外がスローされます。
タイプ「ClassY」のオブジェクトをタイプ「ClassX」にキャストできません。
コードはこのようなものですがfoo
、単なる新しいClassY()ではなく、動的にロードされます。
object foo = new ClassY();
ClassX bar = (ClassX)foo;
なぜそれがこれを行うのか誰かが知っていますか? ClassY
間違いなく実装されClassX
、すべてのアセンブリ/ライブラリバージョンはまったく同じです。