2010-03-19 11 views
5

Esiste un equivalente della classe Registry da StructureMap in Unity?Equivalente registro in Unity

Mi piace pensare a un livello/componente/libreria per configurarlo autonomamente, quindi popolando il contenitore. Quindi il livello "genitore" dovrà solo conoscere la classe di registrazione.

risposta

5

No, non c'è. Nel nostro attuale progetto abbiamo mimato manualmente il concetto di un registro anche se la nostra implementazione non è così potente come un registro StructureMap.

Se tutto ciò che si desidera è una configurazione container modulare, è possibile creare un'interfaccia marker (forse IRegistry) e quindi eseguire la scansione dell'applicazione per le classi IRegistry. Con Unity, puoi risolvere classi che non sono ancora state registrate in Unity, così puoi semplicemente risolvere ogni implementazione di IRegistry come la trovi. Le classi di registro potevano prendere il contenitore come parametro costruttore e quindi ogni classe poteva configurare il contenitore come necessario per quel livello/componente/libreria.

public interface IRegistry 
{ 
    void Configure(); 
} 

public class ServicesRegistry : IRegistry 
{ 
    public ServicesRegistry(IUnityContainer container) 
    { 
     _container = container; 
    } 

    public sub Configure() 
    { 
     // Configure container for layer 
    } 
} 

Ora nel tuo avvio app da qualche parte si potrebbe avere un programma di avvio automatico dell'applicazione che sia a conoscenza di tutte le vostre registrazioni o sa come eseguire la scansione per loro.

+0

Sì, ho pensato che fosse la strada da percorrere. Grazie. – Michael