2017-01-05 2 views
0

Je travaille avec MVC 4.0 & .net 4.0 et souhaite utiliser Ninject.NinJect Get Service ne retourne pas une instance de la classe

J'ai une classe statique, dans laquelle les objets sont créés. Je ne peux pas rendre la classe appel statique statique!

Je suis en train d'obtenir une instance basée sur cette liaison

Bind<ClinicWebsite.ViewModels.ISelectionEngine>) 
    .To<ClinicWebsite.ViewModels.Genric_SelectionEngine>(); 

dans la classe statique que j'appelle:

ClinicWebsite.ViewModels.Generic_SelectionEngine myService = 
    ClinicWebsite.App_Start.NinjectWebCommon.Kernel 
     .GetService(typeof(ClinicWebsite.ViewModels.ISelectionEngine)) 
      as ClinicWebsite.ViewModels.Generic_SelectionEngine; 

mais quand j'examinerai "myservice" Je reçois:

The name 'myservice' does not exist in the current context 

Que puis-je faire de mal, ou existe-t-il un autre moyen de créer explicitement une instance avec Ninject (encore une fois, ne peut pas obtenir r id de classe statique d'appel)

NinjectWebCommon

public static class NinjectWebCommon 
{ 
private static readonly Bootstrapper bootstrapper = new Bootstrapper(); 
private static readonly StandardKernel kernel = new StandardKernel(); 

public static void Start() 
{ 
    DynamicModuleUtility.RegisterModule(typeof(OnePerRequestHttpModule)); 
    DynamicModuleUtility.RegisterModule(typeof(NinjectHttpModule)); 
    bootstrapper.Initialize(CreateKernel); 
} 
public static void Stop() 
{ 
    bootstrapper.ShutDown(); 
}   
private static IKernel CreateKernel() 
{   
    try 
    { 
     kernel.Bind<Func<IKernel>>().ToMethod(ctx =>() => new Bootstrapper().Kernel); 
      kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>(); 
     //DependencyResolver.SetResolver(new NinjectDependencyResolver(kernel)); 
     RegisterServices(kernel); 

     return kernel; 
    } 
    catch 
    { 
     kernel.Dispose(); 
     throw; 
    } 
} 
private static void RegisterServices(IKernel kernel) 
{ 
    Bind<ClinicWebsite.ViewModels.ISelectionEngine>().To<ClinicWebsite.ViewModels.Generic_SelectionEngine>(); 
} 
public static IKernel Kernel 
{ 
    get 
    { 
     return kernel; 
    } 
} 
} 
+0

Comment examinez-vous la variable? En debig? Êtes-vous sûr que c'est dans le champ d'application lors de l'évaluation? – VMAtm

Répondre

0

J'ai trouvé la réponse. parce que c'est dans une classe statique, j'ai besoin de faire "myservice" un membre statique de la classe, puis lui assigner.