On other machines the same code works fine.
The problem was the receiving object was coming from a x86 assembly and the object getting assigned to the property was coming from a x64 assembly. Strange that when I moved the code to the other machine it changed the references to all be x86 references. So I did not crash. Not sure how I could fix this forever.