Sto usando l'esempio DSL del registro per configurare structuremap. Ma facendo questo, tutti i miei tipi registrati sono disponibili in tutti i livelli della mia applicazione, dove aggiungo una referenza alla mappa della struttura. Non voglio che il mio livello aziendale conosca qualcosa sul mio livello di accesso ai dati e viceversa. Come faccio a ottenere structuremap per registrare solo tipi specifici per ciascuno dei miei livelli?Structuremap - Come registrare determinati tipi in determinati layer
Ecco il codice nel mio file Global.asax:
ObjectFactory.Initialize(x =>
{
x.AddRegistry<RegistryIOC>();
});
E qui è la mia classe RegistryIOC:
public class RegistryIOC : SMRegistry
{
public RegistryIOC()
{
For<IProfileService>.Use<ProfileService>();
For<IProctorService>().Use<ProctorService>();
//Business Logic Objects
For<IQual>().Use<Qual>();
For<ITest>().Use<Test>();
For<IBoldface>().Use<Boldface>();
For<ITrainingPlan>().Use<TrainingPlan>();
For<IUnit>().Use<Unit>();
//Data Transfer Objects
For<IGenericDTO>().Use<GenericDTO>();
For<IProfileDTO>().Use<ProfileDTO>();
For<IQualDTO>().Use<QualDTO>();
For<IPermissionDTO>().Use<PermissionDTO>();
//Repository Objects
For<IProctorRepository>().Use<ProctorRepository>();
For<IQualsRepository>().Use<QualsRepository>();
For<ITestRepository>().Use<TestRepository>();
For<IUnitRepository>().Use<UnitRepository>();
For<IUserRepository>().Use<UserRepository>();
}
}
Grazie per l'aiuto.
Di che tipo di strati stai parlando? Processi diversi? Macchine diverse?Se sono tutti in esecuzione nello stesso processo, probabilmente fai quello che il tuo livello aziendale conosce * un po '* sul tuo livello dati, in particolare, la sua interfaccia. Non è chiaro quale problema stai cercando di risolvere. Cosa c'è di sbagliato nella tua classe RegistryIOC? –
Abbiamo un livello di servizio, BLL e DAL che sono tutti progetti separati. Ogni progetto fa riferimento a StructureMap. Il livello di servizio conosce gli altri due livelli ma BLL e DAL non si conoscono l'un l'altro. Non voglio che altri sviluppatori facciano uso di Business Objects all'interno del DAL e viceversa. Non voglio che gli sviluppatori utilizzino gli Oggetti del repository all'interno della BLL. Il Service Layer orchestra tutto ciò. Quindi utilizzare la registrazione di tutti i tipi in questo modo rende tutti gli oggetti disponibili su tutti i nostri livelli (progetti). –
Bene, * non * aggiungere un riferimento a StructureMap da qualsiasi altro livello rispetto alla Composizione Root ... –