我有一些Java经验。今天我开始用C#编程因为我喜欢Visual Studio。
作为一项练习,我正在建立一个管理公司所有员工的系统。
我正在研究一个名为Function
的课程:
public class Function
{
private String functionname;
private String department;
private double hourpay;
public String getFunc()
{
return functionname;
}
public String getDepartement()
{
return department;
}
public double getPay()
{
return hourpay;
}
public String toString()
{
return ("Function: " + functionname + "\n" + "Department: " + department + "\n" + "Hourly Pay: " + hourpay);
}
public void setFunctionName(string functionname)
{
this.functionname = functionname;
}
public void setDepartment(String department)
{
this.department = department;
}
public void setPay(double pay)
{
this.hourpay = pay;
}
一个非常简单的基本类来建模函数,现在我想将函数保存在XML文件中。
我的想法是: 创建函数后,我把它放在一个名为Functions(List函数)的列表中 我将列表写入XML文件。
如果我想更新XML文件,我只需加载List,添加一个新函数,然后将其覆盖到XML文件。
我的课程功能就像这样;
public class Functions{
public List<Function> functions = new List<Function>();
public void addFunction(Function func){
functions.Add(func);
}
public void writeFunctions()
{
System.Xml.Serialization.XmlSerializer writer =
new System.Xml.Serialization.XmlSerializer(typeof(Functions));
System.IO.StreamWriter file = new System.IO.StreamWriter(
@"C:\CDatabase\Functions.xml");
writer.Serialize(file, this);
file.Close();
}
}
为了测试它我在按钮的点击事件中实现了它:
Function programmer = new Function();
schoonmaker.setFunctionName("Programmer");
schoonmaker.setDepartment("IT");
schoonmaker.setPay(16.50);
FunctionDatabase.addFunction(schoonmaker);
FunctionDatabase.writeFunctions();
它创建XML文件(如果不存在),这是在XML文件中:
<Functions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<functions>
<Function />
</functions>
</Functions>
它是空的,我不明白为什么以及如何解决它。
我觉得我觉得太容易了,但我找不到解决办法。
提前致谢,
克里斯
答案 0 :(得分:4)
C#不使用像Java这样的getter和setter方法。像这样创建你的属性:
private string functionname;
public string functionname
{
get { return functionname; }
set { functionname = value; }
}
答案 1 :(得分:2)
建议使用属性而不是getter / setter函数 - 它们是C#的一个特性,它被大量使用。
例如,而不是:
public double getPay()
{
return hourpay;
}
尝试:
public double HourPay { get; set; }
或者,如果您希望能够在getter / setter中执行操作:
private double hourPay;
public double HourPay
{
get
{
return hourPay;
}
set
{
hourPay = value;
}
}
通过以这种方式使用公共属性,XML序列化程序应该生成您期望的文件。