【问题标题】:Dynamically determining if application is Winform based or ASP.NET based动态确定应用程序是基于 Winform 还是基于 ASP.NET
【发布时间】:2012-10-03 17:41:21
【问题描述】:

我有一个数据访问层,它被编译为类库并编译为 dll。从历史上看,该 dll 为我的 Web 应用程序提供了对我的数据库的数据访问。它工作得很好,但它的作用是从 web.config 中提取我的连接字符串。这也很好,但现在我想在 Windows 窗体应用程序中使用这个数据 dll。有没有办法让 DLL 知道它是在 web 应用程序还是 winform 应用程序中运行,并从 web.config 或 app.config 文件中适当地拉取连接字符串?

【问题讨论】:

  • DLL 将使用消费应用程序的配置文件。它是 app.config 还是 web.config 都没有关系。 DLL 不需要知道也不关心它是 web 还是 winforms。
  • 我相信@Tim 的回答是正确的。但以防万一,请在引用配置值的位置显示您的代码。
  • @ShaiCohen -- 我使用的代码是ConfigurationManager.ConnectionStrings["MMDatabase"].ConnectionString

标签: c# asp.net .net winforms n-tier-architecture


【解决方案1】:

正如我在评论中所说,类库将使用引用它的应用程序的配置文件。不管是 WinForms 还是 Web App。只要有配置文件,库就可以访问/使用它。

这是将库用于可重用代码的一大优势。

对此的警告是确保配置文件(应用程序或网络)中包含正确的信息:)

【讨论】:

  • 所以如果我使用这一行:ConfigurationManager.ConnectionStrings["MMDatabase"].ConnectionString 那么它会自动知道使用正确的配置文件吗?假设密钥名称 MMDatabase 在两个配置文件中都有效?
【解决方案2】:

实际上,从解耦的角度来看,最好的方法是让使用 DLL 的应用程序提供到库的连接字符串。

【讨论】:

  • 我想到了这一点,但是我是否必须在每次实例化我的类时提供一个连接字符串,或者是否有一种全局方法可以设置一次并完成它?
  • 您必须在实例化类时提供它。但是,这应该在应用程序生命周期中只发生一次。
猜你喜欢
  • 2011-08-22
  • 1970-01-01
  • 1970-01-01
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-28
  • 2015-03-20
相关资源
最近更新 更多