【发布时间】:2014-02-24 08:50:38
【问题描述】:
我正在编写一个基于 C# .NET 4.5 的 Windows 窗体应用程序。
我想在定义应用程序是否在生产调试模式下运行的类之一(可能是主窗体类)中设置一个标志(布尔值)。我将使用此标志来控制应用程序的各种操作,包括基于 GUI 的操作以及要使用的连接字符串。
我对基于 GUI 的东西没有问题,因为标志是在主窗体的类中定义的,但是连接字符串有问题。有一个单独的类用于 DB 访问,它基本上只是定义了一个像这样的常量:
namespace MyApp
{
class DatabaseInterface
{
public static string MyConnectionString = "Data Source=server;Initial Catalog=db";
}
}
我想根据生产/调试标志更改连接字符串(实际上只是“服务器”)。我不想在使用连接字符串的每个地方都放置一个 if/then/else(在调试字符串和生产字符串之间切换),但想要一个可以在整个应用程序中使用的单个命名连接字符串。我还希望不必实例化 DatabaseInterface 对象(我知道我可以在 DatabaseInterface 类的公共属性的“获取”定义中动态更改它)。
有没有办法做到这一点?
【问题讨论】:
-
与其在代码中解决这个问题,不如考虑使用配置文件。如果您使用的是 Web 应用程序,则可以使用 Web 配置转换来指定调试和发布配置的外观(请参阅本文msdn.microsoft.com/en-us/library/dd465318(v=vs.100).aspx)。如果没有,您可以创建 app.config 的调试和发布版本,并使用构建事件通过将正确的复制到 app.config 来选择要使用的版本。
-
在这里查看有关 app.config 和转换的信息:stackoverflow.com/questions/3004210/…
-
我们不能使用 app.config 因为不想向用户公开连接字符串。 App.configs 通常是纯文本,加密它们的方法似乎不可行。
标签: c# connection-string