我目前正在使用adhoc xml文件来保存配置设置并且它正在运行,但它不是它需要的位置。
它是这样的:
<XmlDoc>
<DefaultSettings>
<ExitProgramMessage>Y</ExitProgramMessage>
<DefaultSettings>
<Company>
<ExitProgramMessage>N</ExitProgramMessage>
<Company>
<Workstation>
<ExitProgramMessage>N</ExitProgramMessage>
</Workstation>
<User>
<ExitProgramMessage>Y</ExitProgramMessage>
<User>
<XmlDoc>
编写代码的方式是首先读取DefaultSettings,然后读取公司(覆盖DefaultSettings),然后是Workstation设置(覆盖DefaultSettings或Company Settings),然后是工作站,然后是User ...最后读取胜利,但空白除外。他们没有清除字段。在上面的示例中,ExitProgramMessage最终将为Y。
我遇到了几个问题。
这不容易使用,绝对不直观。
那么,话虽如此,我应该如何实现这一点,我可以创建一个屏幕来更新设置?
xml是正确的方法吗?我应该采用不同的方式吗?我们还没有数据库选项,只有平面文件。
此外,这些设置驻留在具有网络用户访问的共享驱动器的服务器上。因此,这些不能是保存在注册表中的设置或用户特有的任何设置。
非常感谢任何想法。
谢谢!
答案 0 :(得分:1)
我对你的场景的建议是查看你可以在其中提供任何类型的Settings.Properties并在运行时更新它们
使用Settings.Properties的一个非常好的示例是您可以将应用程序的状态保存在其中
有关详细信息,请参阅链接
http://msdn.microsoft.com/en-us/library/aa730869(v=vs.80).aspx
答案 1 :(得分:0)
使用几个班级轻松处理。一个例子:
读取值:
Settings settings = new Settings(file);
var company = settings["Company"].ExitProgramMessage;
写一个值:
using(Settings settings = new Settings(file))
{
settings["Workstation"].ExitProgramMessage = "Y";
}
课程如下:
public class Settings : IDisposable
{
XElement self;
FileInfo file;
public Settings(FileInfo file)
{
if (file.Exists)
self = XElement.Load(file.FullName);
else
self = new XElement("XmlDoc");
this.file = file;
}
public Setting this[string name]
{
get
{
XElement x = self.Element(name);
if (null == x)
self.Add(x = new XElement(name));
return new Setting(x, name);
}
}
public void Dispose()
{
self.Save(file.FullName);
}
}
public class Setting
{
XElement self;
string name;
public Setting(XElement xsetting, string name)
{
self = xsetting;
this.name = name;
}
public string ExitProgramMessage
{
get
{
XElement x = self.Element("ExitProgramMessage");
if (null == x)
return "Unknown"; // default value?
return (string)x;
}
set
{
XElement x = self.Element("ExitProgramMessage");
if (null == x)
self.Add(new XElement("ExitProgramMessage", value));
else
x.Value = value;
}
}
public string Name { get { return name; } }
}