From what I understand I can have a type Foo automatically cast itself to an int when it is passed to a method expecting an int. Can I also do the other direction? i.e. have an int implicitly cast itself to Foo and have this definition also be in foo?
My understanding may be incorrect.
You can.
The sample in this article will show it better then i can explain:
http://msdn.microsoft.com/en-us/library/z5z9kes2.aspx