|
分類:[.NET 全般]
C#からC++/CLIのDLLロードし、ポルモフィズム的にキャストして利用することを考えていますが、 現状キャストエラーとなってしまいます。 何かわかりますようなら教えていただきたく。
〇構成 [C++/CLI] ・BaseDLL interface class IBase
・Library1DLL ref class Lib1Class : IBase
・Library2DLL ref class Lib2Class : IBase
[C#] ・BaseDLLを参照設定で読み込んでおく。 ・以下のような感じで、ライブラリーDLLをロードして IBaseクラスにキャストして利用する。 ---------------------------------------------- Assembly assembly = Assembly.LoadFrom("LibraryDLLファイル名"); libType = assembly.GetType("Lib1Class"); Object obj = Activator.CreateInstance(libType);
// GetInstanceの戻り値はインターフェース型を返すように定義。 MethodInfo method = libType.GetMethod("GetInstance"); Object ret = method.Invoke(obj, null);
// ここで、「Lib1Classのオブジェクトを型IBaseにキャストできません」と例外が発生する。 IBase baseClass = (IBase)ret; -----------------------------------------------
|