Sto utilizzando il contenitore Unity IoC e devo intercettare tutte le chiamate a Risolvi per una determinata interfaccia di base ed eseguire il mio codice personalizzato per costruirle.Estensione di fabbrica dell'oggetto personalizzato per Unity
In altre parole, nel codice di esempio riportato di seguito, quando chiamo container.Resolve<IFooN>()
, se non ha un'istanza del tipo concreto di attuazione, si chiama MyFactoryFunction
di costruire uno, altrimenti lo voglio restituire la copia cache.
Il contenitore Unity standard non è in grado di costruire questi oggetti (aggiornamento : perché sono oggetti remoti .NET, quindi le classi concrete non esistono in nessun assembly nel computer locale) e non desidero per crearli in anticipo e memorizzarli con RegisterInstance.
interface IFoo : IBase { ... }
interface IFoo2 : IBase { ... }
...
container.Resolve<IFoo2>();
...
IBase MyFactoryFunction(Type t)
{
...
}
Sto assumendo che posso creare un'estensione Unità per fare questo, ma mi chiedevo se esiste già una soluzione là fuori che posso prendere in prestito.
la ragione è che stiamo utilizzando .NET remoting per creare la classe. Quindi non possiamo semplicemente chiamare il suo costruttore - il tipo concreto non esiste in nessun assembly sul client.Dobbiamo connetterci a un server e richiedere il suo oggetto che soddisfi l'interfaccia in questione. –