我有一个类库,带有域对象(基于linq的对象,在.net中 4.0)。 我想让这个库为自己的app.config使用连接字符串。
有一些问题: 按照设置使用的模型: ApplicationSettingsBase ,我创建了一个 应该从app.config读取设置的包装器。
然而,与模型不同,我提供默认值。 问题是应该从app.config
加载数据的属性 internal sealed class ApplicationSettings : ApplicationSettingsBase
{
// other properties
[SpecialSetting( SpecialSetting.ConnectionString )]
[global::System.Configuration.DefaultSettingValueAttribute("Server=.;Database=RFPLUSSTD;User Id=SYSADM;Password=SYSADM;")]
public string MainConnectionString
{
get { return (string)this["MainConnectionString"]; }
}
//其他属性 }
in app.config:
<connectionStrings>
<add name="MainConnectionString"
connectionString="..."
providerName="System.Data.SqlClient" />
</connectionStrings>
现在,这不起作用...... 我试图将conn字符串的名称设置为完全限定名称,如 namespace.class.property,但有用。
那么,为什么不工作?我怎样才能使它发挥作用?
谢谢
答案 0 :(得分:1)
您需要确保您在文件系统中拥有权限才能进行更改。我希望你考虑过这个。如果您确定更改了配置文件,并且只提供了默认设置,则可能是从输出bin文件夹中加载配置文件,而不是在项目根目录中。如果您确定修改失败,请发布错误消息。
<强>更新强>
嗨杰克,我认为您的代码的主要问题是它每次都在创建ApplicationSettings类的新实例,如果设置在用户范围内,您将具有null值,然后它会导致每个默认值时间。
您可以使用内置的“设置”类轻松完成此操作。默认情况下,只能在装配体中访问“设置”,内部密封的部分类设置(在 Settings.Designer.cs 中)。如果将其更改为 public sealed ,您将能够从任何程序集访问“设置”,接下来要将设置保留为“应用程序范围”而不是“用户范围”。完成这两项后,您可以毫无问题地检索和保存。