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