У меня есть следующий код:
Type type = typeof(T);
foreach (PropertyInfo pi in type.GetProperties(BindingFlags.Public | BindingFlags.Instance))
{
Type dataType = type.GetProperty(pi.Name).GetType();
object oldValue = type.GetProperty(pi.Name).GetValue(originalVals, null);
object newValue = type.GetProperty(pi.Name).GetValue(newVals, null);
if (oldValue != newValue)
{
// Do Something
}
}
2 переменные originalVals и newVals, которые я использую, являются классами Linq2Sql. Если 1 имеет поле int (intField) с идентификатором 999, а другое имеет то же поле с тем же значением, то сравнение oldValue! = NewValue пройдет, потому что оно, очевидно, будет использовать равенство ссылок.
Я хотел бы знать, как преобразовывать oldValue и newValue в тип, хранящийся в dataType, что-то вроде:
((typeof(dataType)oldValue); or
(dataType)oldValue;
но это не работает. Есть предложения?