c# - 仅当 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
}
我非常感谢任何建议或想法。
解决方案
理论上,如果你使用依赖注入,你可以
- 创建具有接口的项目IData仅由您的 Data.dll 类实现
- 创建具有类的项目NullData以实现具有您的例外的接口并处理没有 Data.dll 的情况
- 让您的 Data.dll 实现 IData 中的接口
- 将 Data.dll 中的类调用替换为对其接口的调用
然后根据 dll 的存在从 NullData.dll 或 Data.dll 注册服务
推荐阅读
- javascript - 在对象数组中查找重复值
- json - 如何更改整个表的 jsonb 对象数组值?
- graphql - Nuxt-Apollo-Graphql - 具有关系的嵌套突变
- laravel - Socket.io 在带有 redis 和 Laravel-echo-server 的 Web 浏览器 chrome 中没有显示任何内容
- c++ - 为什么 C++20 允许默认比较即使被删除也可以编译?
- javascript - excel api从结果中提取行和列
- javascript - 在使用 history.push 更改路由之前,React 状态未应用于正确的状态
- biztalk - BizTalk TypePolling 接收端口静默失败
- node.js - npm install --force 和 npm install --legacy-peer-deps 有什么区别?
- angular - 项目部署被 CORS 策略阻止