获取字段值时出错

时间:2014-12-23 23:27:51

标签: c# class serialization field

好的,你好。我有一节课,我想写一些节省金钱的人。因此,这个类可能是继承的,我们不能只从文件中获取一些值并将它们放入字段中。我这样做了:

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 ...行我收到了一个错误:

enter image description here

好的,我认为这是因为我没有指定任何类型(但是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。

1 个答案:

答案 0 :(得分:1)

如果您想获得Properties,为什么要使用GetMembers?并非所有班级的成员都是财产,但你就像对待他们一样。

foreach (var prop in temp.GetType().GetProperties()) { 
    object value = prop.GetValue(temp, null);
    prop.SetValue(this, value, null);
}