2013-06-05 3 views
1

Здравствуйте, у меня возникли проблемы с синтаксическим разбором моего контекста базы данных для моих статических вспомогательных классов. Для примера мой класс UserHelper, где я хотел бы сделать некоторый поиск, чтобы узнать, является ли пользователь администратором. Теперь я исправлю их, создав новый контекст в моем Userhelper, но я бы хотел использовать один экземпляр, созданный через ninject. Как это возможно?Ninject MVC и static Helper

public static class UserHelper 
{ 
    private static MetropolOpgavebankenEntities _context; 
    public static MetropolOpgavebankenEntities Context 
    { 
     get 
     { 
      if (_context == null) 
       _context = 
        new MetropolOpgavebankenEntities(
         ConfigurationManager.Instance.Configuration.ConnectionString.Value); 
      return _context; 
     } 
    } 

    public static bool IsAdmin() 
    { 
     if (!HttpContext.Current.User.Identity.IsAuthenticated) 
      return false; 
     string username = HttpContext.Current.User.Identity.Name; 
     if(Context.Administrators.Any(x => x.MetropolId.ToLower() == username.ToLower())) 
      return true; 
     return false; 
    } 
} 

Мой Ninject код

private static void RegisterServices(IKernel kernel) 
{ 
    kernel.Bind<MetropolOpgavebankenEntities>().ToMethod(c => new MetropolOpgavebankenEntities(ConfigurationManager.Instance.Configuration.ConnectionString.Value)).InRequestScope(); 
    kernel.Bind<OpgavebankService>().To<OpgavebankService>(); 
} 

ответ

2

Как это возможно?

Нельзя использовать статические классы. Если вы хотите использовать инъекцию зависимостей, и ваша среда DI обрабатывает время жизни объектов, вы должны делегировать это ей. В противном случае вы больше не используете инъекцию зависимостей, но локатор сервисов (который рассматривается как анти-шаблон).

+0

Тогда как бы вы сделали помощников в asp.net mvc с инъекцией зависимостей? – Androme

+3

Какие зависимости вы хотите вводить в помощники? Помощники не должны запрашивать базы данных или так. В ASP.NET MVC HTML-помощники должны генерировать небольшие фрагменты HTML-кода, которые будут использоваться в представлении. Информация, которую они генерируют для этого HTML, - это модель представления, которая должна содержать все необходимое. Модель представления заполнена контроллером, который, в свою очередь, вводит все необходимые зависимости. –

+0

Я использую свой помощник для примера, чтобы проверить, является ли пользователь администратором. – Androme