【问题标题】:How to Call Method Only if LIbrary Exists [duplicate]仅当库存在时如何调用方法[重复]
【发布时间】:2021-05-28 16:41:12
【问题描述】:

我有两个 EXE:

   ImportJob.EXE

   Validator.EXE

每个 EXE 调用一个库:

  Validation.DLL

这一切都很好。接下来我需要做的是将一些逻辑从我的数据层添加到我的导入作业。数据层称为 Data.DLL。为了包含 Data.DLL,我需要在 Validation.DLL 中引用它。

问题是我不想将 Data.DLL 与 Validator.DLL 一起分发。

除非我引用 DATA.DLL,否则我无法编译,所以我不能只在我的调用周围放置一个 try/catch,因为引用将丢失:

来自 Validation.DLL:

 try 
    { 
        results = DATA.RunMethod();
    }
catch (Exception e)
    {
        // 100% okay with eating it
    }

我非常感谢任何建议或想法。

【问题讨论】:

    标签: c# dll shared-libraries


    【解决方案1】:

    理论上,如果你使用依赖注入,你可以

    1. 创建项目IData,其接口只能由您的 Data.dll 类实现
    2. 创建项目 NullData 具有实现接口的类,并处理没有 Data.dll 的情况
    3. 让您的 Data.dll 实现 IData 中的接口
    4. 将 Data.dll 中的类调用替换为对其接口的调用

    然后根据 dll 的存在从 NullData.dll 或 Data.dll 注册服务

    【讨论】:

    • 谢谢,莫达尔。我会尝试一下,看看它是如何工作的。我非常感谢。
    • 依赖注入是关键!
    猜你喜欢
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-02
    • 2015-02-17
    • 1970-01-01
    • 2011-05-27
    • 1970-01-01
    相关资源
    最近更新 更多