Question

OK, the situation is we have a class, PatientDto, and a DynamicProxy generated by Castle, PatientDtoProxy.

We're using this proxy in the Silverlight client, then want to send it back to the server via a WCF service call.

The WCF service Contract expects a PatientDto (ie not the proxy) and, as expected, blows up if you try to send anything else.

Essentially, we feel like we should be "casting" it back to a PatientDto to get things to work... but in reality, even if you cast the reference down to PatientDto, it doesn't change anything -- WCF still sees the object in memory as a PatientDtoProxy and blows up.

Obviously, doing a deep-copy into a new'ed up PatientDto is an option (and does work), but an unpleasant one. Any techniques we're just not thinking of?

Was it helpful?

Solution

What about using AutoMapper and mapping your proxy to a real PatientDto object. Or just manually mapping it yourself.

OTHER TIPS

Just to add a more favourable alternative to mapping to a new object, you can just extract the underlying object.

I use a helper class to do this:

using Castle.DynamicProxy;

namespace Magna.Client.Common.Proxy
{
    public class ProxyDtoUtils
    {
        public static T GetUnderlying<T>(T proxy)
        {
            return ProxyUtil.IsProxy(proxy) ? (T)ProxyUtil.GetUnproxiedInstance(proxy) : proxy;
        }
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top