2009-09-16 5 views
5

Sto implementando un progetto in cui il mio strato si posizionerebbe tra client e server, e qualunque oggetto ottenga dal server, lo avvolgerei in un proxy trasparente e dare al client, in quel modo potrei tenere un traccia di ciò che è cambiato nell'oggetto, quindi al salvataggio, invierei solo le informazioni modificate.creazione del proxy dinamico del castello

Ho guardato il proxy dinamico del castello, linfu, anche se possono generare un tipo di proxy, ma non possono prendere gli oggetti esistenti e avvolgerli invece.

Chiedendosi se la sua possibile a che fare con questi quadri, o se ci sono altre strutture che consentono questo ...

risposta

4

Castello dinamica Proxy 3.x o poi possono farlo, anche se bisogna tenere presente che può solo intercettare metodi virtuali quindi non è un'astrazione perfetta.

+0

i relativi metodi terminare con "WithTarget" sulla '' ProxyGenerator'' class, ad es 'CreateClassProxyTypeWithTarget' – Nathan

5

Utilizziamo entità senza stato e, a causa di un comportamento di ASP.NET GridView, ho avuto bisogno di creare un proxy che avrebbe avvolto solo l'oggetto esistente.

ho creato un intercettore che mantiene un'istanza di destinazione in questo modo:

public class ForwardingInterceptor : IInterceptor 
{ 
    private object target; 

    private Type type; 

    public ForwardingInterceptor(Type type, object target) 
    { 
     this.target = target; 
    } 

    public void Intercept(IInvocation invocation) 
    { 
     invocation.ReturnValue = invocation.Method.Invoke(this.target, invocation.Arguments); 
    }  
} 

allora si può semplicemente creare il proxy involucro:

this.proxyGenerator.CreateClassProxy(type, new ForwardingInterceptor(type, target));