internal void SetValue(Row row, object obj)
{
var colIndex = row.Table.TableInfo.IndexOfColumn(ColumnName);
if (colIndex < 0)
throw new InvalidOperationException(String.Format("The source table '{0}' has no column named '{1}'.",
row.Table.TableInfo.TableName, ColumnName));
var value = row.GetValue(colIndex);
if (Field.IsNullField(value)) {
if (!IsNullable)
throw new InvalidOperationException(String.Format("Cannot set NULL to the non-nullable field '{0}' of {1}.",
Member.Name, Member.DeclaringType));
}
var memberValue = value.ConvertTo(MemberType);
if (Member is PropertyInfo) {
((PropertyInfo)Member).SetValue(obj, memberValue, null);
} else if (Member is FieldInfo) {
((FieldInfo)Member).SetValue(obj, memberValue);
}
}