2017-01-05 3 views
0

Я работаю с MVC 4.0 & .net 4.0 и хочу использовать Ninject.NinJect Get Service не возвращает экземпляр класса

У меня есть статический класс, в котором создаются объекты. Я не могу сделать статический класс вызовов нестатичным!

Я пытаюсь получить экземпляр, основанный на этом связывание

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

в статическом классе я называю:

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

но когда я рассматриваю "MyService" я получаю:

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

Что я могу делать неправильно или есть другой способ явно создать экземпляр с Ninject (опять же, не может получить r Идентификатор статического класса вызова)

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

Как вы исследуете переменную? В дебюге? Вы уверены, что в процессе оценки? – VMAtm

ответ

0

Я нашел ответ. , потому что это в статическом классе, мне нужно сделать «myservice» статическим членом класса, а затем назначить ему.

Смежные вопросы