C#:无法转换#System; System.Int64'输入' System.Int32'

时间:2015-07-31 04:10:47

标签: c# .net mono xamarin.ios

我的代码如下:

Dictionary<object, object> dict = ...
Color = (int)dict.GetValue("color");

当我将Color转换为int时,我得到以下异常:

  

System.InvalidCastException:无法转换类型的对象   &#39; System.Int64&#39;输入&#39; System.Int32&#39;。

我不知道为什么我只能从一个长期投射到一个整数。我知道这个值小于0xFFFFFF(24位),因为它是一种颜色。

我尝试使用unchecked,但这也没有帮助。

3 个答案:

答案 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);
}