如何仅在库存在时调用方法
How to Call Method Only if LIbrary Exists
我有两个 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 注册服务
我有两个 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 注册服务