2009-10-19 69 views
0

我有这样的代码:在类中封装AppSettings?

var mySetting = ConfigurationManager.AppSettings["mySetting"]; 

有没有一种方法来创建属性封装每个设置,所以我没有使用字符串键,如“mySetting”?我知道你可以通过创建一个“自定义配置部分”来实现,但我不想再创建另一个部分...我想使用现有的<appSettings>部分。

回答

2

是的 - 使用Visual Studio提供的“设置”类 - 使用“添加新项目”,然后选择“设置”。

这给你一个具有强类型属性(字符串,int等)和所有的类。

这将在自定义配置部分的app.config中添加它需要的条目 - 但它已经全部为您提供了,那么为什么要重新发明轮子?

马克

+0

这种方法将工作非常适合某些种类的项目(例如WPF应用程序,类库等),但它不会对所有项目类型的工作。例如,“设置文件”不是Web应用程序的新建项目选项。虽然答案很好。 – 2009-10-19 23:06:07

+0

@Brian:是的,我同意 - 它不是解决所有问题的方法,但是当它可用时,我会使用它 - 不要一直改造一切! :..... – 2009-10-20 04:39:41

3

另一种选择是创建一个单独的界面,你可以用它来检索应用程序设置

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或其他来源。