Хорошо, привет там. У меня есть класс, в котором я хочу написать usiversal saver. Таким образом, этот класс может быть унаследован, мы не можем просто получить некоторые значения из файла и поместить их в поля. Я сделал это таким образом:Ошибка при получении значения поля
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 ...
я получил сообщение об ошибке:
Ok, я думал, что это произошло, потому что я не задан тип (но ? 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
. Помоги мне, пожалуйста! Благодарю.
P.S. MonoDevelop, Ubuntu 14.04.
я не могу ничего, что может быть 'null' :( – Efog
Результатом' GetProperty' является 'null', если нет имущества с прилагающегося по имени. –