所以这就是令我难过的代码:
private static void AssignId(object entity, string id)
{
var idFieldInfo = entity.GetType().GetProperties().SingleOrDefault(it => it.GetCustomAttributes(typeof(KeyAttribute), false).Any());
if (idFieldInfo != null)
{
var type = idFieldInfo.PropertyType;
if (type == typeof(byte))
{
idFieldInfo.SetValue(entity, Convert.ToByte(id), null);
}
else if (type == typeof(short))
{
idFieldInfo.SetValue(entity, Convert.ToInt16(id), null);
}
else if (type == typeof(int))
{
idFieldInfo.SetValue(entity, Convert.ToInt32(id), null);
}
else if (type == typeof(long))
{
idFieldInfo.SetValue(entity, Convert.ToInt64(id), null);
}
else if (type == typeof(sbyte))
{
idFieldInfo.SetValue(entity, Convert.ToSByte(id), null);
}
else if (type == typeof(ushort))
{
idFieldInfo.SetValue(entity, Convert.ToUInt16(id), null);
}
else if (type == typeof(uint))
{
idFieldInfo.SetValue(entity, Convert.ToUInt32(id), null);
}
else if (type == typeof(ulong))
{
idFieldInfo.SetValue(entity, Convert.ToUInt64(id), null);
}
}
}
Run Code Online (Sandbox Code Playgroud)
是否有更智能的方法来分配字符串值对应的整数
L.B*_*L.B 10
您可以使用 Convert.ChangeType
if (idFieldInfo != null)
{
var type = idFieldInfo.PropertyType;
idFieldInfo.SetValue(entity, Convert.ChangeType(id, type), null);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1230 次 |
| 最近记录: |