如果加载(.NET)DLL,只执行函数的最佳方法?

Wil*_*Wil 5 c# dll

我不确定解释这个问题的最好方法,如果您不明白,请留下评论.

基本上,我有一些库用于处理不同程序的各种任务 - 通知只是一个例子.

现在,我正在构建一个新程序,我希望它尽可能轻量级.虽然我想包含我的通知引擎,但我认为很多人不会真正使用它的功能,因此,我宁愿不在默认情况下包含它 - 只是作为可选下载.

我该怎么编程呢?

使用非托管Dll和P/Invoke,我基本上可以将整个批次包装在try/catch循环中,但我不确定托管版本.

到目前为止,我能想到的最好的方法是在启动时检查DLL文件是否存在,然后设置一个字段bool或类似的,每次我想要通知被触发,我可以做一个if /检查bool和火...

我从调试窗口看到DLL文件只在需要时加载.该程序显然会编译,因为项目可以看到所有组件,但是它会在没有DLL的最终用户机器上运行吗?

更重要的是,有更好的方法吗?

理想情况下,我希望在我的应用程序中没有任何关于通知的信息,并以某种方式使它如果下载DLL文件,它会在外部添加此功能.有一些额外的字节调用notification("blabla");(或类似的)真的不是世界末日,但是当我有更大的意图并且只想知道这类事情的最佳实践时,我正在考虑更多的事情.

dte*_*ech 2

您可以使用 System.Reflection.Assembly 及其 LoadFile 方法来动态加载 DLL。然后,您可以使用 Assembly 中的方法来获取嵌入 DLL 中的类、类型等并调用它们。

如果您只是检查 .dll 是否存在或加载插件目录中的每个 .dll,您就可以得到您想要的。