Domanda

Ciao a tutti

Voglio chiedere come utilizzare il blocco dell'applicazione di iniezione di criteri per registrare i metodi di entrata e uscita in questi casi:

Caso 1: in caso di registrazione di gestori di eventi di controlli di un modulo web, sai che la classe diciamo che _Default deve essere ereditato dalla classe System.Web.UI.Page , quindi non possiamo ereditare la nostra classe dalla classe MarshalByRefObject in modo che la registrazione non funzioni.

Caso2: nel caso in cui abbiamo una classe statica e dobbiamo registrare i metodi all'interno, cosa possiamo fare per ereditare questa classe da MarshalByRefObject calss, al fine di ottenere la registrazione funziona.

È stato utile?

Soluzione

Mi sembra che abbiano alcuni stupidi requisiti per poter applicare la registrazione ... Questo potrebbe essere un offtopic, ma potresti voler esaminare il framework Spring.AOP per applicare la registrazione ai tuoi oggetti senza la necessità di ereditare da MarshalByRefObject. (Nei linguaggi amputati con ereditarietà multipla è un requisito fastidioso e drastico penso).

Altri suggerimenti

Per quanto riguarda il caso 1, il blocco di iniezione dei criteri è in grado di agire sugli oggetti per i quali si dispone di un'interfaccia. Abbastanza facile da fare in Visual Studio usando l'azione Refactor- > Extract Interface, se non si scrive già pensando alle interfacce.

Per quanto riguarda il caso 2, il tuo "statico" class non potrebbe davvero essere una classe statica. Potrebbe ereditare da MarshalByRefObject o implementare un'interfaccia specificata dall'utente. Potrebbe quindi avere un costruttore privato e un'istanza singleton che viene iniettata dalla politica. Tutti i tuoi metodi statici chiamerebbero solo i metodi di istanza corrispondenti (inseriti nella policy) sull'istanza singleton della classe.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top