(Can't believe this hasn't already been asked, but I can't find a dup)
In Visual Studio with lots of projects, when I first open the solution, I sometimes get the warning Object of type "X" cannot be converted to object of type "X"
. Generally rebuilding seems to make it go away, but does anyone know what this is caused by, and how to avoid it?
UPDATE I read somewhere that deleting all your resx files and rebuilding can help. I unthinkingly tried this. Not a good idea...
If you have a user control that exposes an object with a getter/setter, you are going to have a bad time (as they say). It is, in fact, the setter that is the problem.
SO to fix it, instead of doing this:
You could do something along the lines of this:
... which will prevent the Visual Designer from trying to assign a serialized version of ObjectX to your control at design time, which is really what was going on ...
I had the same error as you but for me removing the resx file worked.
After trying all of the above, cleaning, rebuilding, removing/re-adding references and editing the designer file - in the end simply closing visual studio and re-opening the project made everything better.
tl;dr
Try switching it off and on again.
This would really depend on the exact scenario (that is vague), but the most likely cause would be different assembly references / versions. Perhaps you have some "top level" code that references version "A" of a dll, and references a library which references version "B" of a similar dll; then:
would have the
SomeType
(on the left) from "A", with.Foo
theSomeType
from "B". Try ensuring that all your projects are using the same version of all the assemblies you rely on.Another scenario is the same name in different namespaces, but that is a bit of an obvious one, and I suspect the error message would make this obvious?
There are some other scenarios where types with the same names in the same namespace (but different assemblies) conflict with eachother; here "extern aliases" can help, but are a complete PITA to work with.
The Types indicated may have same name, same namespace, and same Assembly (DLL) but on different versions or location.
You may try the following code on those two objects you are referring to define the location of their assemblies.
I found the following to be useful, as described here: Object of type 'Data.TimeLineChartedDay[]' cannot be converted to type 'Data.TimeLineChartedDay[]'?