首页 > 解决方案 > 仅当 LIbrary 存在时如何调用方法

问题描述

我有两个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#dllshared-libraries

解决方案


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

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

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


推荐阅读