Adding a service reference to a web service (this is all WCF) in Visual Studio produces some generated code including a client-side restatement of the interface being exposed.

I understand why this interface is generated: you might be consuming a 3rd party service and not have access to the actual interface.

But I do, and the two are *not* assignment compatible even though the transparent proxy does indeed exactly implement the interface to which I want to cast.

I can use reflection, but that's ugly. Is there some way to defeat this faux type safety and inject metadata to so I can use an interface with a class?

---

My specific problem departs from the norm in complicated ways that have to do with a single client that uses some derivatives of a base class directly and uses others remotely via service references. The base class for each server needs to keep references to subscribing clients in a collection for enumeration to notify events, and the problem was type varied due to the use of proxies. 

None of these answers solves my specific problem, yet every single answer was instructive and helpful. I found my own solution (use a dual binding) but I would never have figured it out if you hadn't radically improved my understanding of the whole business.

Three excellent answers. How to choose just one? I choose the first, because it directly solves the problem I first *thought* I had.