У меня есть объект, RenderComponent
, который имеет свойство с именем Model
типа StaticModel
.Когда я получаю PropertyInfo
моего RenderComponent
и затем вызываю GetValue()
, это дает мне TargetException, говоря: «Объект не соответствует типу цели».
Я напишу маленькийОбразец кода, чтобы дать вам суть того, что терпит неудачу.Вот иерархия:
public class RenderComponent
{
StaticModel Model;
}
public class StaticModel
{
}
И я, по сути, делаю это:
RenderComponent renderComponent = new RenderComponent();
PropertyInfo[] props = type.GetProperties(BindingFlags.Public | BindingFlags.Instance);
foreach (PropertyInfo info in props)
{
// I get the exception here
Object value = info.GetValue(renderComponent, null);
}
Моя программа, конечно, намного сложнее, но я все еще не понимаю, как это может бытьтерпит неудачу.Я, должно быть, упускаю что-то простое.
В этой строке я получаю исключение:
info.GetValue(obj, null)
Где info
- это PropertyInfo
из StaticModel
,и obj
является экземпляром RenderComponent
.Когда я останавливаюсь на этом исключении и наблюдаю за obj, я могу фактически пройти по иерархии, пока не доберусь до своего значения StaticModel, и оно существует и содержит данные, которые я ожидаю.
Я уверен, что еслиЯ взял небольшой пример кода, который я разместил в этой теме, он будет работать нормально, так что это должно быть что-то с тем, как я называю его в моем движке, я просто не вижу, как GetValue может завершиться ошибкой, когда obj явно имеет это значение внутриэто.
Вот скриншот моей отладки 'obj' и нахождения StaticModel:
И вот ошибка, которую я получаю:
И здесь вы можете увидеть значения obj
и info
, как доказательство того, что мой экземпляр объекта, который я передаю, является RenderComponent, а PropertyInfo я вызываю GetValueon является статической моделью (которая является членом RenderComponent, как вы можете видеть на первом изображении: