0

次のコードで、dll からインスタンスをロードして取得しました。

ApiClass api = new ApiClass(this);

Assembly SampleAssembly = Assembly.LoadFrom(@"C:\plugin1.dll");
Type myType = SampleAssembly.GetTypes()[0];
MethodInfo Method = myType.GetMethod("onRun");
object myInstance = Activator.CreateInstance(myType);
try
{
    object retVal = Method.Invoke(myInstance, new object[] { api });
}

IApi インターフェイスのコードは次のとおりです。

namespace PluginEngine
{
    public interface IApi
    {
        void showMessage(string message);

        void closeApplication();

        void minimizeApplication();
    }
}

IApi を dll プロジェクトにコピーしてビルドしました。dllのコードです:

namespace plugin1
{
    public class Class1
    {
        public void onRun(PluginEngine.IApi apiObject)
        {
            //PluginEngine.IApi api = (IApi)apiObject;
            apiObject.showMessage("Hi there...");
        }
    }
}

しかし、dll メソッドを呼び出したいときにエラーが発生します。

Object of type 'PluginEngine.ApiClass' cannot be converted to type 'PluginEngine.IApi'

4

1 に答える 1