4
所以這是一個讓我傷心的代碼:如何通過反射一個字符串賦值給一個整數字段
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);
}
}
}
是否有分配相應的整數
退房[本文](http://www.codeproject.com/Articles/61460/Using-LINQ-for-type-conversion),它覆蓋除了'一changeType更寬範圍的目標類型的',但你會解析str你自己的絃樂。 – dasblinkenlight 2012-04-27 09:52:45
[通過字符串值反射設置屬性]的可能重複(https://stackoverflow.com/questions/1089123/setting-a-property-by-reflection-with-a-string-value) – 2017-07-24 11:50:19