开发者

How to "really" down-cast a DynamicProxy back to its original type (to send over WCF)

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?


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


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;
        }
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜