none
Передача информации о методе через лямбду. RRS feed

  • Вопрос

  • Всем привет.
    Пытаюсь передать информацию о методе MVC контроллера из одного класса другому, но сделать это красиво. У меня есть класс, с методом, который принимает лямбду.
    public void RegisterForControllerMethod<TController>(Expression<Func<TController,ActionResult>> actionMethod)
    {
    }
    

    Внутри метода что-то делается, но не суть важно.
    Вызвать я его пытаюсь следующим образом:
    registrator.RegisterForControllerMethod<HomeController>(c=>c.Index(0));
    

    Компилируется, но при попытке вызова - выплевывает exception со следующими словами:
    Expression of type 'System.Web.Mvc.ActionResult' cannot be used for return type 'System.Web.Mvc.ActionResult'
    Что бы это значило, откуда у меня растут руки и как исправить ситуацию? 

    28 июня 2011 г. 8:59

Ответы

Все ответы

  • Придумал временное решение - заменил ActionResult в Func<TController,ActionResult> на object. Пришлось немного поступиться формализмом, но работает.

    Теперь буду признателен, если кто-нибудь объяснит мне в чем была фишка.

    28 июня 2011 г. 9:41
  • Проверил - все нормально компилируется и работает. Может с версиями MVC в проекте перекос? Покажи точный stack trace.
    My blog | My Favorite Project
    • Помечено в качестве ответа The_Cjay 28 июня 2011 г. 14:11
    28 июня 2011 г. 11:14
    Модератор
  • Да. Спасибо большое - уже разобрался.

    Дело было в том, что в своем проекте использовал 3 версию MVC, а сборка, для которой делал надстройку была под 2.

    • Помечено в качестве ответа Abolmasov Dmitry 28 июня 2011 г. 14:15
    28 июня 2011 г. 14:12