TargetException: объект не соответствует типу цели
Я получаю эту странную ошибку, когда я пытаюсь этот код:
class SomeClass
{
public decimal ClientCode { get; set; }
public DateTime Date { get; set; }
public override int GetHashCode()
{
int sum = 0;
foreach (var p in GetType().GetProperties())
{
var method = p.GetType().GetMethod("GetHashCode");
var value = p.GetValue(this, null);
sum += (int)(method.Invoke(value, null)); // <-- HERE!
}
return sum;
}
}
Что в этом плохого? Я перебираю свойства, потому что этот код будет выпущен.
1 ответ
Решение
Я должен получить GetHashCode из объекта, а не из PropertyType
public class SomeClass
{
public decimal ClientCode { get; set; }
public DateTime Date { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public byte B { get; set; }
public override int GetHashCode()
{
int sum = 0;
foreach (var p in GetType().GetProperties())
{
var method = typeof(object).GetMethod("GetHashCode");
var value = p.GetValue(this, null);
if (value != null)
sum += (int)(method.Invoke(value, null));
}
return sum;
}
}