我有这样的代码:在类中封装AppSettings?
var mySetting = ConfigurationManager.AppSettings["mySetting"];
有没有一种方法来创建属性封装每个设置,所以我没有使用字符串键,如“mySetting”?我知道你可以通过创建一个“自定义配置部分”来实现,但我不想再创建另一个部分...我想使用现有的<appSettings>部分。
我有这样的代码:在类中封装AppSettings?
var mySetting = ConfigurationManager.AppSettings["mySetting"];
有没有一种方法来创建属性封装每个设置,所以我没有使用字符串键,如“mySetting”?我知道你可以通过创建一个“自定义配置部分”来实现,但我不想再创建另一个部分...我想使用现有的<appSettings>部分。
是的 - 使用Visual Studio提供的“设置”类 - 使用“添加新项目”,然后选择“设置”。
这给你一个具有强类型属性(字符串,int等)和所有的类。
这将在自定义配置部分的app.config中添加它需要的条目 - 但它已经全部为您提供了,那么为什么要重新发明轮子?
马克
另一种选择是创建一个单独的界面,你可以用它来检索应用程序设置
public interface IFooSettings
{
int MySettings{get;}
}
public class ApplicationSettings : IFooSettings
{
public string MySettings{get; private set;}
ApplicationSettings()
{
MySettings = ConfigurationManager.AppSettings["mySetting"];
}
}
这样做的动力是,如果由于某种原因,你想开始保存您的配置在数据库中,你需要做的唯一的事情是获得来自IFooSettings一类使用一个数据库
public class SqlApplicationSettings : IFooSettings
{
SqlApplicationSettings()
{
//Do Something to populate the settings
}
public string MySettings{get; private set;}
}
诚然,这可能b对你的应用程序有点矫枉过正,但它会提供很大的灵活性,因为你不会绑定到ConfigurationManager或其他来源。
检出Configuration Section Designer这将允许您在Visual Studio中以图形方式执行此操作。
http://www.codeproject.com/KB/cs/genuilder.aspx将允许你这样做在ASP.NET项目
这种方法将工作非常适合某些种类的项目(例如WPF应用程序,类库等),但它不会对所有项目类型的工作。例如,“设置文件”不是Web应用程序的新建项目选项。虽然答案很好。 – 2009-10-19 23:06:07
@Brian:是的,我同意 - 它不是解决所有问题的方法,但是当它可用时,我会使用它 - 不要一直改造一切! :..... – 2009-10-20 04:39:41