Domanda

OK, la situazione è che abbiamo una classe, PatientDto, e un DynamicProxy generato da Castello, PatientDtoProxy.

Stiamo usando questo proxy nel client Silverlight, quindi vogliamo rispedirlo al server tramite una chiamata di servizio WCF.

Il contratto di servizio WCF si aspetta un PatientDto (cioè non il proxy) e, come previsto, fa esplodere se si tenta di inviare qualsiasi altra cosa.

In sostanza, ci sentiamo come dovremmo essere "casting" di nuovo ad un PatientDto per far funzionare le cose ... ma in realtà, anche se si lanci il riferimento verso il basso per PatientDto, non cambia nulla - WCF vede ancora l'oggetto in memoria come un PatientDtoProxy e fa esplodere.

Ovviamente, facendo un profondo-copia in un PatientDto new'ed up è un'opzione (e funziona), ma uno sgradevole. Eventuali tecniche non siamo solo pensando?

È stato utile?

Soluzione

Cosa succede ad usare automapper e mappatura proxy per un oggetto PatientDto reale. O semplicemente manualmente la mappatura da soli.

Altri suggerimenti

Giusto per aggiungere un più favorevole alternativa alla mappatura a un nuovo oggetto, si può semplicemente estrarre l'oggetto sottostante.

Io uso una classe di supporto per fare questo:

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;
        }
    }
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top