1

我正在尝试为应用程序编写插件。我唯一得到的是一个定义接口的 dll 资源文件;这是代码:

using System;
using System.Drawing;

namespace App.Plugin.Resources.Interface
{
  public interface IAppPlugin
  {
    string Name { get; set; }

    string Description { get; set; }

    string Author { get; set; }

    string Version { get; set; }

    Icon MenuIcon { get; set; }

    EventHandler PluginEventHandler { get; set; }
  }
}

然后我创建了一个实现这个接口的类,让它显示一个消息框,编译 dll,把它放在应用程序的 Plugins 文件夹中,当应用程序执行并启动插件时,它确实显示了消息。

在我看来,该软件提供了执行外部代码的方法(通过插件系统),但实际上并没有提供对任何应用程序属性或方法的访问权限。

考虑到上述情况,我的问题是:我是否能够使用给定的资源以任何其他方式与主机进程交互(例如,在选择菜单项时获得通知,甚至自己将菜单项添加到主 GUI)或这样做插件系统只是充当应用程序启动器(通过执行我提供的 dll 中的代码)?

4

1 回答 1

2

这似乎只是一个应用程序启动器,而不是真正的插件,除非有一些约定俗成的策略实现:也许应用程序通过反射查看插件构造函数,并将一些接口传递给主机系统,或者它查找一些标记为 some 的属性传递一些入口点的自定义属性。传递主应用程序入口点的另一个可能的工具是PluginEventHandler,尝试在调试中查看调用插件时收到的内容。此外,尝试使用一些工具作为ILspy来查看插件实例化中是否还有更多内容。

于 2012-08-07T11:53:51.300 回答