如何选择包含外部库?

时间:2016-10-21 07:28:56

标签: c# dll portable-class-library

我有一个PCL,我想包含一堆基类,所以我不必为每个项目再次创建它们。现在我正在考虑在Facebook上添加,因为每次我想在项目中使用我的PCL时我都必须引用一个外部dll,即使它是一个只有几个屏幕的项目,因为如果我的项目只有几个屏幕,我会生成错误我没有。

对于那些不是问题的人:我计划添加更多我不需要的外部dll。

我该如何解决这个问题?我想在我的PCL中包含使用这个dll的代码,但是我不希望每次使用PCL时都被强制包含dll。

1 个答案:

答案 0 :(得分:1)

这里的问题是您可能希望在代码中使用外部库中的类型,而不能在不引用库的情况下执行此操作。

解决这个问题的方法是使用反射,但是你的代码会变得更复杂,你希望你没有。

另一个解决方案是:

  • 为“普通PCL”中的每个外部依赖项创建一个界面(例如,对于Facebook,{。1}}。
  • 为每个外部依赖项创建一个新的PCL,它引用您的“公共PCL”和外部库,并且有一个实现其中一个接口的类(即ISocialMediaPlatform
    • 然后,此实现可以引用外部依赖项并直接使用其类型
  • 使用反射或依赖注入框架将每个接口的实现注入“common PCL”

这确实增加了另一层复杂性,但作为副作用,它也使您的常见PCL代码可测试。

最后,我个人更喜欢的解决方案是,根本没有一个巨大的“普通PCL”,而是将它分成几个小的,以完成一个特定的角色。