C#を使用して開発しているシェルのアドオンシステムを作成しています。私はこれとこれをフォローしました。アドオンをロードする関数は次のとおりです。
public void loadAppFromDLL(string assemblyFile)
{
Assembly a = Assembly.Load(assemblyFile);
Type app = a.GetType("App");
MethodInfo loadMethod = app.GetMethod("load");
object appInstance = Activator.CreateInstance(app);
loadMethod.Invoke(appInstance, null);
}
アドオンは次のとおりです。
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace App
{
public class App
{
public void load()
{
MessageBox.Show("Application loaded successfully!");
}
}
}
アドオンをビルドするときは、シェルの実行可能ファイルと同じディレクトリに配置して、次のコマンドを呼び出します。
LoadExternalApp lea = new LoadExternalApp();
lea.loadAppFromDLL("SampleApp");
(LoadExternalAppにはDLLロード関数が含まれています)
シェルをデバッグしているときに、次のことに気づきました。
- アプリが起動しませんでした
- System.NullReferenceExceptionがありました
私は何を正しくしていないのですか?