我不确定解释这个问题的最好方法,如果您不明白,请留下评论.
基本上,我有一些库用于处理不同程序的各种任务 - 通知只是一个例子.
现在,我正在构建一个新程序,我希望它尽可能轻量级.虽然我想包含我的通知引擎,但我认为很多人不会真正使用它的功能,因此,我宁愿不在默认情况下包含它 - 只是作为可选下载.
我该怎么编程呢?
使用非托管Dll和P/Invoke,我基本上可以将整个批次包装在try/catch循环中,但我不确定托管版本.
到目前为止,我能想到的最好的方法是在启动时检查DLL文件是否存在,然后设置一个字段bool或类似的,每次我想要通知被触发,我可以做一个if /检查bool和火...
我从调试窗口看到DLL文件只在需要时加载.该程序显然会编译,因为项目可以看到所有组件,但是它会在没有DLL的最终用户机器上运行吗?
更重要的是,有更好的方法吗?
理想情况下,我希望在我的应用程序中没有任何关于通知的信息,并以某种方式使它如果下载DLL文件,它会在外部添加此功能.有一些额外的字节调用notification("blabla");(或类似的)真的不是世界末日,但是当我有更大的意图并且只想知道这类事情的最佳实践时,我正在考虑更多的事情.
您可以使用 System.Reflection.Assembly 及其 LoadFile 方法来动态加载 DLL。然后,您可以使用 Assembly 中的方法来获取嵌入 DLL 中的类、类型等并调用它们。
如果您只是检查 .dll 是否存在或加载插件目录中的每个 .dll,您就可以得到您想要的。
| 归档时间: |
|
| 查看次数: |
1026 次 |
| 最近记录: |