改后方案还有一个问题:索引器是用文本,这样,如果程序员不小心写错一个配置选项,系统无法在编译阶段就发现,所以想把代码由:
string sTemp = oXMJH2["XM1"].Value;
改为
string sTemp = oXMJH2.XM1.Value;
ClsXMJH2.cs 代码如下:
using System.Collections.Generic;
namespace WindowsFormsApplication12
{
class ClsXMJH2
{
public ClsXM XM1 = new ClsXM("XM1");
public ClsXM XM2 = new ClsXM("XM2");
List<ClsXM> oXM = new List<ClsXM>();
public ClsXMJH2()
{
foreach (System.Reflection.FieldInfo obj1 in this.GetType().GetFields())
{
if (obj1.FieldType.Name == XM1.GetType().Name)
{
oXM.Add(obj1.GetValue(this) as ClsXM);
}
}
}
public void GetAllValue()
{
foreach (ClsXM oTempXM in oXM)
{
oTempXM.GetValue();
}
}
public void SaveAllValue()
{
foreach (ClsXM oTempXM in oXM)
{
oTempXM.SaveValue();
}
}
}
}
Form1.cs 的代码就可以改为:
using System;
using System.Windows.Forms;
namespace WindowsFormsApplication12
{
public partial class Form1 : Form
{
ClsXMJH2 oXMJH2 = new ClsXMJH2();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
oXMJH2.GetAllValue();
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
oXMJH2.SaveAllValue();
}
private void button1_Click(object sender, EventArgs e)
{
string sTemp = oXMJH2.XM1.Value;
MessageBox.Show(sTemp);
oXMJH2.XM2.Value = DateTime.Now.ToString("hh:mm:ss");
}
}
}
到顶了,目前想不到更好的优化方面了。
浙公网安备 33010602011771号