First off, in case you, like me, didn’t know this: in 2.0 the SOAP formatter (the default formatter if you’re using an HTTP channel) does not support serializing generic objects. Luckily, once you figure that out, it’s trivial to switch to the binary formatter. Also, if you’re planning on using SoapSuds, it apparently also doesn’t like generics. I didn’t look to deep into this, so I may have been doing something wrong.

Second, transparent proxies are the evil doppelgangers of the remoting world, willing and able to masquerade as anything and everything, just to make your life more difficult. For example, within NHibernate’s session implementation,

if (maybeProxy is INHibernateProxy)

will apparently always evaluate to true. This can be remedied by changing it to:

if (maybeProxy.GetType().GetInterface(“INHibernateProxy”) != null)

I just know this is going to bite me in the ass later, but it solved the immediate problem.