您必须在重新启动后创建新的观察者对象。你需要存储的信息需要有不同的类,如:
public class SettingItem
{
public string Path { get; set; }
}
public class Settings
{
public SettingItem[] Items { get; set; }
}
然后你可以用XmlSerializer
的对象存储在磁盘上:
public static class SettingManager
{
public static void Save(string path, object obj)
{
if (string.IsNullOrWhiteSpace(path))
throw new ArgumentNullException(nameof(path));
if (obj == null)
throw new ArgumentNullException(nameof(obj));
Directory.CreateDirectory(Path.GetDirectoryName(path));
using (var s = new StreamWriter(path))
{
var xmlSerializer = new XmlSerializer(obj.GetType());
xmlSerializer.Serialize(s, obj);
}
}
public static T Load<T>(string path) where T : class, new()
{
if (string.IsNullOrWhiteSpace(path))
throw new ArgumentNullException(nameof(path));
if (File.Exists(path))
{
using (var s = new StreamReader(path))
{
var xmlSerializer = new XmlSerializer(typeof(T));
return xmlSerializer.Deserialize(s) as T;
}
}
return new T();
}
}
用法:
var settingPath = @"c:\...xml";
var settings0 = new Settings
{
Items = new[]
{
new SettingItem { Path = @"c:\path\to\watch" },
}
};
SettingManager.Save(settingPath, settings0);
var settings1 = SettingManager.Load<Settings>(settingPath);
声音就像你已经有了一个_idea_一样。你能行的。 – MickyD
你会说我的第一步,他们是正确的吗? – somethingstrang
我认为这是一个很好的轮廓,_yes_。你有任何代码要显示吗?看[faq]和[问] – MickyD