1

我正在寻找有关如何在多个 Visual Studio 项目之间最好地共享代码的建议。我正在为一个基本主题而苦苦挣扎,并试图获得一些想法来克服它。

我的解决方案有:

  • 几个网络应用项目
  • 几个独立的流程项目,例如 Windows 服务和/或控制台应用程序和/或 Azure WebJobs

例如,所有项目共有的功能示例是需要调用一些常见的 Web 服务,或者需要从 Amazon S3 读取和写入。

我挣扎的地方是:显然,实现通用功能的代码应该自己分解,例如在一个单独的类库项目中。例如,要与 S3 通信,代码需要知道我的 Amazon 凭证、S3 端点等——所有这些东西通常都存储在应用程序配置文件中。但我不喜欢将配置文件放在类库项目中的想法,因为它将特定的实现绑定到它们。但为了不这样做,我必须从调用项目中传递这些信息。例如,Web 应用程序的 web.config 和控制台应用程序的 app.config 文件包含此连接信息。调用 S3 代码时,我假设将此配置信息传递到共享代码中。

但是,这对我来说似乎很糟糕*,我不知道为什么。如果有意义的话,我仍然觉得我正在将 S3 代码(例如)“绑定”到特定的配置方法。我不确定我的感觉是否是一种错误的偏见。

*例如,我可能需要传入任意数量的配置数据:

  • 连接字符串
  • Web 服务的凭据
  • API 端点
  • 来自我的应用程序配置设置的任意数据(一些调用者需要,但其他人不需要,所以很多时候数据只是无用,但我必须做传递一些东西的工作)

所以每次我在我的主应用程序中添加一个配置变量时,我都必须修改公共代码的构造函数。事情会一直在运动。

你能给我一些建议吗?

4

1 回答 1

0

我喜欢使用配置对象作为参数,这样签名永远不会改变,即使你添加/删除属性。例如....

public class AmazonConfigSettings {
    public string AWSkey { get; set; }
    public string ApiEndpoint { get; set; }
    ......
}

然后,您的签名可能总是如下所示:

public MySharedClass(AmazonConfigSettings config) { .... } 

即使(何时)亚马逊彻底检查了他们的网络服务设置。

于 2015-12-24T19:55:21.100 回答