2017-01-05 7 views
-1

Это может быть глупый вопрос, но я следую этому инструктору here.Пытается использовать модуль Ninject

Тогда я эту следующую ошибку, когда я с помощью Ninject

Название «Bind» не существует.

Что происходит?

using Ninject.Modules; 
using Ninject; 

namespace WCFExampleLibrary.Services 
{ 
    public class IocServices : NinjectModule 
    { 
     public override void Load() 
     { 
      Bind<ICourseRepository>().To<CourseRepository>(); 
      Bind<IStudentRepository>().To<StudentRepository>(); 
      Bind<IEnrollementRepository>().To<EnrollementRepository>(); 

     } 
    } 
} 


using System.Reflection; 
using Ninject; 
namespace WCFExampleLibrary.Services 
{ 
    public static class FactoryBuilder 
    { 
     private static IKernel _Kernal { get; set; } 
     public static T GetServices<T>() 
     { 
      _Kernal = new StandardKernel(); 
      _Kernal.Load(Assembly.GetExecutingAssembly()); 
      return _Kernal.Get<T>(); 
     } 
    } 
} 
+0

Как вы используете? Необходимо увидеть больше кода. –

ответ

1

здесь простой пример (вы должны наследовать от NinjectModule):

class Program 
    { 
     static void Main(string[] args) 
     { 

      Ninject.IKernel kernel = new StandardKernel(new TestModule()); 

      var samurai = kernel.Get<Samurai>(); 
      samurai.Attack("your enemy"); 

      Console.ReadLine(); 
     } 
    } 


    public interface IWeapon 
    { 
     string Hit(string target); 
    } 

    public class Sword : IWeapon 
    { 
     public string Hit(string target) 
     { 
      return "Slice " + target + " in half"; 
     } 
    } 

    public class Dagger : IWeapon 
    { 
     public string Hit(string target) 
     { 
      return "Stab " + target + " to death"; 
     } 
    } 

    public class Samurai 
    { 
     readonly IWeapon[] allWeapons; 

     public Samurai(IWeapon[] allWeapons) 
     { 
      this.allWeapons = allWeapons; 
     } 

     public void Attack(string target) 
     { 
      foreach (IWeapon weapon in this.allWeapons) 
       Console.WriteLine(weapon.Hit(target)); 
     } 
    } 

    class TestModule : Ninject.Modules.NinjectModule 
    { 
     public override void Load() 
     { 
      Bind<IWeapon>().To<Sword>(); 
      Bind<IWeapon>().To<Dagger>(); 
     } 
    } 

Надеется, что это работает для вас. С уважением, Andy

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

  • Нет связанных вопросов^_^