У меня есть структура класса ниже. Я получаю эту ошибку. Я что-то пропустил?Как добавить объект в свойство общего списка экземпляра класса с использованием отражения
Объект не соответствует типу цели.
Структура класса
public class Schedule
{
public Schedule() { Name = ""; StartDate = DateTime.MinValue; LectureList = new List<Lecture>(); }
public string Name { get; set; }
public DateTime StartDate { get; set; }
public List<Lecture> LectureList { get; set; }
}
public class Lecture
{
public string Name { get; set; }
public int Credit { get; set; }
}
Что я пытаюсь:
Schedule s = new Schedule();
Type t = Type.GetType("Lecture");
object obj = Activator.CreateInstance(t);
obj.GetType().GetProperty("Name").SetValue(obj, "Math");
obj.GetType().GetProperty("Credit").SetValue(obj, 1);
PropertyInfo pi = s.GetType().GetProperty("LectureList");
Type ti = Type.GetType(pi.PropertyType.AssemblyQualifiedName);
ti.GetMethod("Add").Invoke(pi, new object[] { obj });
При попытке воспроизвести проблему, я нашел еще одну проблему. Вы устанавливаете 'Credit to' 1', в то время как это строка. Измените его тип на int. –
@stuartd есть причина, по которой я использую отражение справа? – Helio
Когда я попробовал вашу часть кода, после этого утверждения я получил нулевое значение. Тип t = Тип.GetType («Лекция»); Таким образом, очевидно, что следующий оператор будет вызывать исключение null ref, но сообщение о том, что вы получили, отличается от него. Я мог видеть, что использование Type.GetType может быть проблемой (если в случае), то ознакомьтесь с нижеприведенным ответом от Jon Skeet - http://stackoverflow.com/a/1044472/1966993 –