Ninject WithConstructorArgument: Aucune liaison correspondante n'est disponible et le type n'est pas auto-lisible

Ma compréhension de WithConstructorArgument est probablement erronée, car celui-ci ne fonctionne pas:

J'ai un service, permet de l'appeler MyService, dont le constructeur prend plusieurs objets, et un paramètre de chaîne appelée testEmail. Pour ce paramètre de chaîne, j'ai ajouté ce qui suit Ninject de liaison:

string testEmail = "[email protected]";
kernel.Bind<IMyService>().To<MyService>().WithConstructorArgument("testEmail", testEmail);

Cependant, lors de l'exécution de la ligne suivante de code, j'obtiens une exception:

var myService = kernel.Get<MyService>();

Ici est l'exception-je obtenir:

Erreur lors de l'activation de la chaîne de l'Absence de correspondance liaisons sont disponibles, et la
le type n'est pas auto-liables. Chemin d'Activation:
2) l'Injection de
la dépendance de la chaîne en paramètre testEmail de constructeur de type
MyService
1) Demande de MyService

Suggestions:
1) vérifiez que vous avez défini une liaison pour la chaîne.
2) Si la liaison a été définie dans un module, vérifiez que le module a
été chargé dans le noyau.
3) s'Assurer que vous n'avez pas accidentellement
créé plus d'un noyau.
4) Si vous utilisez le constructeur
arguments, s'assurer que le nom du paramètre correspond à l'constructeurs
nom du paramètre.
5) Si vous utilisez le module automatique de chargement, s'assurer
le chemin de recherche et les filtres sont corrects.

Ce que je fais mal?

Mise à JOUR:

Ici est la MyService constructeur:

[Ninject.Inject]
public MyService(IMyRepository myRepository, IMyEventService myEventService, 
                 IUnitOfWork unitOfWork, ILoggingService log,
         IEmailService emailService, IConfigurationManager config,
         HttpContextBase httpContext, string testEmail)
{
    this.myRepository = myRepository;
    this.myEventService = myEventService;
    this.unitOfWork = unitOfWork;
    this.log = log;
    this.emailService = emailService;
    this.config = config;
    this.httpContext = httpContext;
    this.testEmail = testEmail;
}

J'ai norme liaisons pour tous les paramètre du constructeur de types. Seulement 'string' a pas de liaison, et HttpContextBase a une liaison qui est un peu différent:

kernel.Bind<HttpContextBase>().ToMethod(context => new HttpContextWrapper(new HttpContext(new MyHttpRequest("", "", "", null, new StringWriter()))));

et MyHttpRequest est définie comme suit:

public class MyHttpRequest : SimpleWorkerRequest
{
    public string UserHostAddress;
    public string RawUrl;

    public MyHttpRequest(string appVirtualDir, string appPhysicalDir, string page, string query, TextWriter output)
    : base(appVirtualDir, appPhysicalDir, page, query, output)
    {
        this.UserHostAddress = "127.0.0.1";
        this.RawUrl = null;
    }
}

source d'informationauteur Jean-François Beauchamp