est-il du tout possible de configurer NIJYJECT pour charger des modules déclarés comme J'ai essayé de configurer Je peux bien sûr rendre les modules interne code>? p>
internalVisibleto code> pour l'assemblage NINJECT, mais cela n'aide pas. P>
public code>, mais ils devraient vraiment être
interne code>. p>
3 Réponses :
interne Cependant, vous pouvez écrire votre propre "scanner NInjectModule". p> alors vous pouvez faire ce qui suit. p> kernalbase.load (iEnumerable
getExportedTypes () code> qui ne renvoie que des types publics.
var modules = NinjectModuleScanner.GetNinjectModules(assemblies).ToArray();
var kernel = new StandardKernel();
Travaux très bien, n'avait pas pensé à m'approcher comme ça comme je cherchais quelque chose intégré. Merci.
Juste l'idée de di est horrible et grotesque, cela aggrave d'un autre niveau entier.
Vous pouvez configurer NInject pour injecter des classes internes à l'aide de la propriété injectnonpublic code> de
NInjectSettings code>
classe. Vous devez le transmettre comme un argument sur le standardkernel Code>
constructeur:
var kernel = new StandardKernel(); var modules = Assembly .GetExecutingAssembly() .DefinedTypes .Where(typeof(INinjectModule).IsAssignableFrom) .Select(Activator.CreateInstance) .Cast<INinjectModule>(); kernel.Load(modules);