from:https://q.cnblogs.com/q/3195/
我有一个类如下
public class Employee
{
Guid? Id = null;
int? salary = null; // 数据库里对应的类型为SmallInt型
/// <summary>
/// 员工编号
/// </summary>
public Guid ID
{
get
{
if (Id == null)
{
return Guid.Empty;
}
return Id.Value;
}
set
{
if (value == Guid.Empty)
{
Id = null;
}
else
{
Id = value;
}
}
}
/// <summary>
/// 员工工资
/// </summary>
public int Salary
{
get
{
// 如果员工工资为空,返回int的最小值
if (salary == null)
{
return int.MinValue;
}
return salary.Value;
}
set
{
if (value == int.MinValue)
{
salary = null;
}
else
{
salary = value;
}
}
}
}
现在,我从数据库里查询出来了记录,想通过反射把这些记录的值放进员工的实体对象里,由于salary在数据库里的类型是smallInt类型的,在给实例的salary字段设置值时会报错System.ArgumentException: 类型“System.Int16”的对象无法转换为类型“System.Nullable`1[System.Int32]”。
给salary字段赋值的代码大概为FieldInfo field = ........;field.SetValue(model, value),其中model为生成的实力对象,value为DataRow["