好的,你好。我有一节课,我想写一些节省金钱的人。因此,这个类可能是继承的,我们不能只从文件中获取一些值并将它们放入字段中。我这样做了:
virtual public void Load(string filename) {
if (!File.Exists(filename)) throw new FileNotFoundException("File not found.");
FileStream fs = File.OpenRead(filename);
BinaryFormatter bf = new BinaryFormatter();
object loaded = bf.Deserialize(fs);
if (!(loaded is Application)) throw new TypeLoadException("File doesn't consist any applications.");
Application temp = loaded as Application;
fs.Close();
foreach (System.Reflection.MemberInfo item in temp.GetType().GetMembers()) {
object value = temp.GetType().GetProperty(item.Name).GetValue(temp, null);
this.GetType().GetProperty(item.Name).SetValue(this, value, null);
}
}
但是,在object value ...
行我收到了一个错误:
好的,我认为这是因为我没有指定任何类型(但是object
?...)
所以,我试着这样做:
foreach (System.Reflection.MemberInfo item in temp.GetType().GetMembers()) {
Type varType = item.GetType();
object value = temp.GetType().GetProperty(item.Name).GetValue(temp, null) as varType;
this.GetType().GetProperty(item.Name).SetValue(this, value, null);
}
现在错误为The type or namespace 'varType' could not be found
。请帮帮我!谢谢。
附: MonoDevelop,Ubuntu 14.04。
答案 0 :(得分:1)
如果您想获得Properties
,为什么要使用GetMembers
?并非所有班级的成员都是财产,但你就像对待他们一样。
foreach (var prop in temp.GetType().GetProperties()) {
object value = prop.GetValue(temp, null);
prop.SetValue(this, value, null);
}