Search code examples
c#.netmonoxamarin.ios

C#: Unable to cast object of type 'System.Int64' to type 'System.Int32'


I have code as follows:

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

When I convert the Color to an int, I get the following exception:

System.InvalidCastException: Unable to cast object of type 'System.Int64' to type 'System.Int32'.

I am not sure why I can't just cast from a long to an int. I know for a fact that the value is less than 0xFFFFFF (24 bits) since it is a color.

I tried using unchecked but that didn't help either.


Solution

  • You must first unbox the value as the dictionary's value type is object.

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