次のコードで、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'