La prima cosa che devi essere sicuro di fare è eseguire il codice di binding all'interno di un modulo Ninject all'interno del metodo Load, che hai sovrascritto.
Ad esempio:
public class ApplicationModule : NinjectModule {
public override void Load() {
Bind<IWeapon>().To<Sword>();
// additional bindings continue ...
}
}
La classe NinjectModule eredita classi e interfacce che definiscono il fluente sintassi di associazione Ninject rendendo il metodo Bind<T>()
disponibili nell'ambito della classe. Questi moduli vengono poi passati al kernel Ninject quando il kernel viene istanziata:
var kernel = new StandardKernel(new ApplicationModule());
Il Load()
metodo di ogni modulo passata al kernel verranno chiamati e le definizioni vincolanti contenute all'interno dei metodi eseguiti.
L'esempio precedente specifica NinjectModule come classe base; tuttavia, questo è specifico per la versione 2.0 di Ninject. Se si utilizza 1.x Ninject, la classe base sarà StandardModule
. In entrambi i casi, il metodo di caricamento è sovrascritto e le istruzioni di binding (che sono simili in entrambe le versioni) vengono emesse lì.
Per rispondere ulteriormente la vostra domanda:
Per Ninject 1.x, la DLL richiesto è ninject.core.dll e lo spazio dei nomi che StandardModule è definita in è Ninject.Core.
Per Ninhect 2.0, la DLL richiesta è ninject.dll e lo spazio dei nomi in cui è impostato NinjectModule è Ninject.Modules.
In entrambi i casi, potrebbe essere necessario fare riferimento a più spazi dei nomi a seconda di come complesso sue dichiarazioni vincolanti ottenere - ad esempio se si utilizza attacchi contestuali o entità le associazioni, ecc Nel caso di Ninject 1.x, potrebbe anche essere necessario fare riferimento a Ninject.Conditions.dll per questi casi più complessi.
Non è necessario fare riferimento a Castle.Core a meno che non si utilizzi la funzione di intercettazione di Ninject, che è una caratteristica di base 1.x ma un'estensione nella versione 2.0.
Spero che questo aiuti.
fonte
2010-02-23 17:00:55
Grazie. Posso solo sbatterti una volta e selezionare questa come la risposta giusta Vorrei poter fare di più. Ho faticato per tutto il pomeriggio. C'è una documentazione su come tutto è appeso insieme ma ho faticato a trovare qualcosa per il mio scenario. Altri tutorial su come iniziare sembravano mancare quando sono andato al risultato della ricerca. – uriDium
Ehi, nessun problema! Mi è capitato di usare Ninject un bel po 'e ho faticato a lungo quando stavo confrontando tutti i contenitori IoC là fuori. Sono contento di poterti aiutare. –