2

尽管这似乎是一个简单的问题,但我无法从 F# 控制台应用程序写入配置文件。我的最后一次尝试看起来像

let config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
// config.AppSettings.SectionInformation.AllowExeDefinition <-ConfigurationAllowExeDefinition.MachineToLocalUser
match self.FileName with
| Some name -> config.AppSettings.Settings.["FileName"].Value <- name
| None -> ()
config.Save(ConfigurationSaveMode.Modified)

我得到了各种各样的错误。与此代码对应的是

System.NullReferenceException:对象引用未设置为对象的实例。在 System.Configuration.ConfigurationElement.SetPropertyValue(ConfigurationProperty prop, Object value, Boolean ignoreLocks) ...

F# 中没有好的文档,我发现很难遵循 C#/VB 文档。有什么建议么?

4

1 回答 1

2

您必须检查 null 并相应地更新或添加。

像这样的东西:

let config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
let settings = config.AppSettings.Settings
let set (s:KeyValueConfigurationCollection) key value = 
   match s.[key] with 
   | null -> s.Add(key,value)
   | x    -> x.Value <- value
match self.FileName with
| Some name -> set settings "Filename" name
| _         -> ()
于 2012-09-28T09:22:56.283 回答