7
votes

Ninject: Les modules peuvent être chargés qui sont déclarés internes

est-il du tout possible de configurer NIJYJECT pour charger des modules déclarés comme interne ?

J'ai essayé de configurer internalVisibleto pour l'assemblage NINJECT, mais cela n'aide pas.

Je peux bien sûr rendre les modules public , mais ils devraient vraiment être interne .


0 commentaires

3 Réponses :


8
votes

interne kernalbase.load (iEnumerable utilise le getExportedTypes () code> qui ne renvoie que des types publics.

Cependant, vous pouvez écrire votre propre "scanner NInjectModule". p> xxx pré>

alors vous pouvez faire ce qui suit. p>

var modules = NinjectModuleScanner.GetNinjectModules(assemblies).ToArray();
var kernel = new StandardKernel();


2 commentaires

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.



5
votes

Vous pouvez configurer NInject pour injecter des classes internes à l'aide de la propriété injectnonpublic de NInjectSettings classe. Vous devez le transmettre comme un argument sur le standardkernel constructeur: xxx


0 commentaires

0
votes
var kernel = new StandardKernel();

var modules = Assembly
                    .GetExecutingAssembly()
                    .DefinedTypes
                    .Where(typeof(INinjectModule).IsAssignableFrom)
                    .Select(Activator.CreateInstance)
                    .Cast<INinjectModule>();

kernel.Load(modules);

0 commentaires