Possiedo un'applicazione Web ASP.NET MVC che implementa un provider di appartenenze personalizzato. Il provider di appartenenza personalizzato prende uno UserRepository
nel suo costruttore che fornisce un'interfaccia tra il provider di appartenenza e NHibernate. Il UserRepository
viene fornito dal contenitore IoC Ninject.Iniezione di dipendenza con provider di appartenenze personalizzate
Ovviamente, tuttavia, questo non funziona quando il provider è istanziato da .NET: il costruttore senza parametri non ha un repository utente e non può crearne uno (il repository utente richiede una sessione di NHibernate passata al suo costruttore), che quindi significa che il fornitore non può accedere al suo archivio dati. Come posso risolvere la dipendenza dell'oggetto?
Probabilmente vale la pena notare che questa è un'applicazione esistente che è stata aggiornata con Ninject. Precedentemente ho usato costruttori senza parametri che erano in grado di creare le loro dipendenze richieste insieme ai costruttori parametrici per assistere il collaudo delle unità.
Qualche idea, o mi sono costruito in un angolo qui?
Ninject ha avuto un adattatore CSL ufficiale gennaio 2010. –
Manca ancora dalla home page di CSL (è invece incluso nella versione di NInject) – SztupY
"costruttore, che inizializza i repository necessari utilizzando Ninject" - attenzione, se i repository (o le loro dipendenze) sono in ambito di richiesta o transitorio e qualsiasi il contesto di dati usa e getta entra in gioco, finirai per accedere a un contesto di dati disponibili su tutti tranne la prima richiesta (perché non controlli la durata del provider e ASP.NET lo riutilizzerà tra le richieste). Ho finito per ottenere un'istanza di repository dal localizzatore ogni volta che dovevo chiamarne uno quando mi sono imbattuto in questo problema. –