My point is that it seems to me that if you are doing something with it that you couldn't do to any type, you shouldn't be using an anonymous type. I would genuinely like to know what a valid case is for using an anonymous type where later you will be accessing one of its properties by name. If you pass that anonymous type to another function it will have to be an [object] anyway, and if its just the same function, build the properties for the anonymous type before initializing the anonymous type. You can't pass an anonymous type to another function as its type (and it would be stupid if you could), and you can't cast from an object to the anonymous type (which would lead to the errors you mentioned above). So, within the same function, your anonymous type may as well be an object instead of a var.