J'utilise Ninject Cadre. Dans mon code, j'ai un objet paresseux. Je peux créer une instance, mais quand j'appelle la propriété de la valeur, j'ai eu une exception.
private Lazy<IPsoriasisReportUserControl> psoriasisReportUserControl; [Inject] public Lazy<IPsoriasisReportUserControl> PsoriasisReportUserControl { get { return psoriasisReportUserControl; } set { psoriasisReportUserControl = value; } }
3 Réponses :
Vous avez besoin d'un constructeur public par défaut sur paresseux:
Il y a un constructeur sans paramètre. L'injection n'utilise pas que je pense. Ne sais pas comment puis-je configurer que <
paresseux code> fait probablement référence au type dans la BCL. Vous serez difficile pressé pour le changer.
[TESTMETHOD] Public Void UC_DiagnosticReporte_how_lazy_works () {paresseux
Vous devez lier ipsoriasisreportusercontrol comme ceci: kernel.bind (typeof (ipsoriasisreportusercontrol)). À (typeof (p Soriasisreportuserco ntrol); avant la liaison de paresseux <>
Bind(typeof (Lazy<IPsoriasisReportUserControl>)).ToMethod( ctx => new Lazy<IPsoriasisReportUserControl>(() => Kernel.Get<IPsoriasisReportUserControl>()));
Cette réponse fonctionne. Mais vous pouvez également faire l'autre réponse en utilisant simplement l'usine d'extension Ninject. Cela fonctionnera automatiquement.
Utilisez l'extension d'usine pour Ninject https://github.com/ninject/ninject.extensions.factory p>
En réalité, un lien vers le wiki pourrait être la référence plus utile que le référentiel de code source, car il montre comment l'injection de paresseux