Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ninject и свой MvcRouteHandler в MVC4 project / 5 сообщений из 5, страница 1 из 1
28.06.2013, 17:21
    #38314326
balykovdron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ninject и свой MvcRouteHandler в MVC4 project
У меня стандартный ACP.NET MVC4 проект + Ninject.Web.Mvc. Регистрирую сервисы так:

Код: c#
1.
2.
3.
4.
5.
...
private static void RegisterServices(IKernel kernel)
{
   kernel.Bind<IRepository>().To<SqlRepository>().InSingletonScope();
}




Далее у меня есть свой MvcRouteHandler, в котором я хочу иметь инжектированное свойство своего репозитория

Код: c#
1.
2.
3.
4.
5.
public class MyMvcHandler : MvcRouteHandler
    {
        [Inject]
        public IRepository db { get; set; }
...




Но почему свойство db всегда равно null????? Например в контроллере аналогичное свойство разрешается, а тут нет! Помогите люди добры — извелся весь уже...
...
Рейтинг: 0 / 0
28.06.2013, 21:32
    #38314467
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ninject и свой MvcRouteHandler в MVC4 project
balykovdron,

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

получай в своём классе MyMvcHandler объект на IRepository вот так:

var repo = DependencyResolver.Current.GetService<IRepository>();

и работай с ним дальше.
...
Рейтинг: 0 / 0
28.06.2013, 22:42
    #38314497
balykovdron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ninject и свой MvcRouteHandler в MVC4 project
hVosttполучай в своём классе MyMvcHandler объект на IRepository вот так:
var repo = DependencyResolver.Current.GetService<IRepository>();
и работай с ним дальше.

попробую. пасиб.
...
Рейтинг: 0 / 0
29.06.2013, 15:35
    #38314738
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ninject и свой MvcRouteHandler в MVC4 project
кому интересно почему не работает DI в конвеере обработки запросов, вот библиотечный код создания MvcRouteHandler, который в свою очередь создаёт MvcHandler

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
public static Route MapRoute(this RouteCollection routes, string name, 
          string url, object defaults, object constraints, string[] namespaces)
{        
    if (routes == null)        
    {        
        throw new ArgumentNullException("routes");        
    }        
    if (url == null)        
    {        
        throw new ArgumentNullException("url");        
    }        

    Route route = new Route(url, new MvcRouteHandler())        
    {        
        Defaults = CreateRouteValueDictionary(defaults),        
        Constraints = CreateRouteValueDictionary(constraints),        
        DataTokens = new RouteValueDictionary()        
    };        

    if ((namespaces != null) && (namespaces.Length > 0))        
    {        
        route.DataTokens["Namespaces"] = namespaces;        
    }        

    routes.Add(name, route);        

    return route;        
}        

...

 public class MvcRouteHandler : IRouteHandler
  {
    protected virtual IHttpHandler GetHttpHandler(RequestContext requestContext)
    {
      requestContext.HttpContext.SetSessionStateBehavior(GetSessionStateBehavior(requestContext));
      return new MvcHandler(requestContext);
    }
  }
...
Рейтинг: 0 / 0
01.07.2013, 09:11
    #38315382
balykovdron
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ninject и свой MvcRouteHandler в MVC4 project
hVosttbalykovdron,
var repo = DependencyResolver.Current.GetService<IRepository>();


Спасибо, работает!
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Ninject и свой MvcRouteHandler в MVC4 project / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]