我正在创建一系列相关的插件。每个插件适用于不同的实体。每个插件都必须有自己的程序集吗?我正在使用 Visual Studio,并在同一解决方案中创建了第二个项目,但我看不到注册工具中的新步骤。
谢谢
我正在创建一系列相关的插件。每个插件适用于不同的实体。每个插件都必须有自己的程序集吗?我正在使用 Visual Studio,并在同一解决方案中创建了第二个项目,但我看不到注册工具中的新步骤。
谢谢
它可以做,但不是必须的。这几乎是您的设计决定。考虑一下你是否有几个类都实现了IPlugin
public class MyFirstPlugin : IPlugin
{
//implemented as per usual
}
public class MySecondPlugin : IPlugin
{
//implemented as per usual
}
如果您要在插件注册工具中注册该 DLL,您将看到以下结构:
- Server
- DLL
- MyFirdtPlugin
- MySecondPlugin
然后,您可以根据需要向每个插件添加步骤。
另一种方法是每个 DLL 有一个插件,这会给你
- Server
- DLL1
- MyFirstPlugin
- DLL2
- MySecondPlugin
我必须承认这似乎有点矫枉过正——但它也可能取决于你如何使用你的解决方案。
除了 glosrob 的回答,我猜您正在使用插件注册工具来注册您的插件。如果是这样,您需要确保在将新插件添加到同一个 dll 之后,使用注册工具更新插件 dll 本身,以便您可以注册您创建的新插件方法。
是的,您可以在不同的类库项目中创建每个插件,但这不是一个好习惯。我更愿意将所有插件收集到一个类库中。
请注意,从文件对话框中选择程序集后,您必须单击加载程序集按钮以加载所有实现 IPlugin 接口的类。
要回答这个问题 - 不,每个新插件都不必包含在新程序集中。
详细说明 - 从技术上讲,将所有插件代码放入一个项目和一个文件中是可行的。
警告 - 上面将是管理所有 ifs 和 buts 的噩梦,所以这是一个很好的例子,可以但不应该。
建议 - 我通常为每个实体的插件有一个单独的项目,并使用开关处理所有消息。有时,我可能有两到三个集会,但当你到达那里时,你就会知道什么时候该这样做。通常,一个 DLL 就足够了。