从DLL调用函数

时间:2014-04-22 09:25:04

标签: c# vb.net function dll reference

众所周知,您可以在dll中使用函数,引用DLL然后从主可执行文件中调用函数。 我想知道反向的方式是否也可行? 所以我喜欢从dll调用主可执行文件中的函数,而不需要在dll中调用的实际函数。 原因:我正在开发一个插件系统。

2 个答案:

答案 0 :(得分:1)

你有点比较苹果和橙子:构建系统引用dll与运行时发生的所有事件的插件系统完全不同。通常,您想要从插件主机(您的exe)调用某些函数的插件系统就像这样(简化):

//in a common project
//functions from the host that will be callable by the plugin
public interface PluginHost
{
  void Foo();
}

//the plugin
public interface Plugin
{
  void DoSomething( PluginHost host );
}

//in the exe
class ThePluginHost : PluginHost
{
  //implement Foo
}

//in the plugin
class ThePlugin : Plugin
{
  //implement DoSomething,
  //has access to exe methods through PluginHost
}

//now al that's left is loading the plugin dll dynamically,
//and creating a Plugin object from it.
//Can be done using Prism/MEF etc, that's too broad of a scope for this answer
PluginHost host = new ThePluginHost();
Plugin plugin = CreatePluginInstance( "/path/to/dll" );
plugin.DoSomething( host );

答案 1 :(得分:1)

是的,可以在项目中添加可执行文件作为参考,您可以像调用引用的dll中的函数一样使用它们