我的代码如下:
Dictionary<object, object> dict = ...
Color = (int)dict.GetValue("color");
当我将Color转换为int时,我得到以下异常:
System.InvalidCastException:无法转换类型的对象 &#39; System.Int64&#39;输入&#39; System.Int32&#39;。
我不知道为什么我只能从一个长期投射到一个整数。我知道这个值小于0xFFFFFF
(24位),因为它是一种颜色。
我尝试使用unchecked
,但这也没有帮助。
答案 0 :(得分:12)
您必须先unbox值,因为词典的值类型为object
。
Dictionary<object, object> dict = ...
Color = (int)(long)dict.GetValue("color");
答案 1 :(得分:0)
无法跟踪,因为已经跟踪了另一个具有相同键值的实例
找到解决方案
context.Patrol.AddRange(model); // error
entity.Property(e => e.Id)
.HasColumnName("ID")
.ValueGeneratedNever(); // old
entity.Property(e => e.Id)
.HasColumnName("ID"); //remove ValueGeneratedNever()
答案 2 :(得分:0)
如果您不知道原始类型,则以下成语可能会更方便。
public T Get<T>(string key)
{
return (T) Convert.ChangeType(_dict[key], typeof(T), CultureInfo.InvariantCulture);
}