none
Использование анонимных типов с Web API Help page RRS feed

  • Вопрос

  • Здравствуйте. Подскажите, можно ли сделать так, чтобы при использовании Web API Help page у метода контроллера в Response Information отображались возвращаемые значения, при условии использования анонимных типов в коде возврата?

    public class TestController : ApiController { /// <summary>описание контроллера</summary> /// <returns> /// <param name="int a">A</param>

    /// <param name="int b">B</param>

    /// </returns> public object[] Get() { return TestGet(); } object[] TestGet() { return someContext.SomeTable.Select(i=> new { a = i.a, b = i.b} };

    }

    }

    в ResponseInformation в таком случае будет просто [ {}, {}, {} ]
    • Изменено SUDALV92 10 мая 2013 г. 7:28
    • Перемещено YatajgaEditor 10 мая 2013 г. 9:55

Ответы

  • Имя анонимного типа создаётся компилятором и не достутпно на уровне исходного кода. Правда его можно извлечь рефлексией, но не думаю, что это хорошая идея. Делайте контракт метода ясным для клиента, это позволяет большое наличие встроенных типов. В крайнем случае тот же массив объектов будет лучшим вариантом.
    • Помечено в качестве ответа SUDALV92 10 мая 2013 г. 11:43
    Модератор
  • "а что значит "сделать контракт метода ясным для клиента"? То есть использовать именованый тип?" - именно так. Не каждый же день нужно менять возвращаемый тип. Определите класс с этими полями (свойствами) и сделайте его возвращаемым типом.
    • Помечено в качестве ответа SUDALV92 10 мая 2013 г. 11:43
    Модератор

Все ответы

  • Имя анонимного типа создаётся компилятором и не достутпно на уровне исходного кода. Правда его можно извлечь рефлексией, но не думаю, что это хорошая идея. Делайте контракт метода ясным для клиента, это позволяет большое наличие встроенных типов. В крайнем случае тот же массив объектов будет лучшим вариантом.
    • Помечено в качестве ответа SUDALV92 10 мая 2013 г. 11:43
    Модератор
  • а что значит "сделать контракт метода ясным для клиента"? То есть использовать именованый тип? Просто на клиенте-то всё работает как надо, но в документации необходимо, чтобы отображался шаблон возвращаемой информации. Он отображается только когда я в тип возвращаемого значения указываю явный тип, а не object.

    То есть массив объектов как раз-таки не устраивает из-за неправильного отображения на Help Page.

  • "а что значит "сделать контракт метода ясным для клиента"? То есть использовать именованый тип?" - именно так. Не каждый же день нужно менять возвращаемый тип. Определите класс с этими полями (свойствами) и сделайте его возвращаемым типом.
    • Помечено в качестве ответа SUDALV92 10 мая 2013 г. 11:43
    Модератор
  • Эх )

    у меня так и было изначально, просто не хотелось почти дублировать классы из объектной модели EF...

    ну ладно, спасибо за помощь

  • Если сущностные классы используются без изменений, то ничего дублировать не нужно. А если нет то использование DTO вполне нормальное явление.
    Модератор