【问题标题】:Optional reference in Dot Net点网中的可选参考
【发布时间】:2014-07-23 14:32:14
【问题描述】:

我希望它可能是 .Net 中的一个高级概念
我的问题是

如何设置带有可选参考的程序?

例如:考虑这种情况, 我有某个程序能够将数据导出到 Excel。
此功能需要参考Microsoft Office Excel(某些特定版本)

有没有办法编写一个程序,无论是否安装了 Excel 都可以运行,但某些特定选项(如读取或写入 Excel)只有在安装了 Excel 时才会执行。

即使没有安装 Excel,程序也应该运行。

谢谢。

【问题讨论】:

  • 你必须使用Assembly.Load...动态加载它
  • 使用 Try/Catch 来尝试创建实例或工作表(动态)并在失败时设置变量,例如 HasExcel = False。那么它只是你代码中的一堆If HasExcel Then 语句。
  • @Plutonix 我不认为这很简单,因为如果无法加载 Excel PIA(没有一些代码来处理该故障),应用程序将无法运行。
  • 不,不是为了做 Excel 相关的东西;但对于程序流程(即不调用 Excel 相关程序),启用按钮、菜单等是我提供的。
  • 问题是 - 您不需要参考 Excel 来导出数据。您可以使用 Microsoft.Ace.Oledb 将数据写入 excel。

标签: c# .net vb.net visual-studio reference


【解决方案1】:

有两种基本方法。

  1. Assembly.Load 允许您在运行时加载任意程序集、检查其内容、实例化对象、调用方法等。您通常会将其隐藏在诸如接口、默认实现、工厂方法等之类的东西后面。依赖注入可能依赖于这样的技术。

  2. 您可以使用 Microsoft 托管可扩展性框架,它可以完成所有这些以及更多工作。见http://msdn.microsoft.com/en-AU/library/dd460648%28v=vs.110%29.aspx

Excel 有点特殊,因为它可以通过 COM 自动化访问,这提供了一些其他机会并可能增加一些其他复杂性。您通常可以构建和运行程序,因为包装程序集将存在,如果 Excel 不存在,则可以在运行时处理执行失败。

无论您采用哪种方式,都可能需要编写相当多的代码。问题中没有足够的细节可以说更多,但这不仅仅是设置“可选”标志的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 2014-11-10
    • 2021-04-10
    • 1970-01-01
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多