Возврат его как System.Object
- это единственный способ вернуть анонимный тип из метода. К сожалению, другого способа сделать это нет, поскольку анонимные типы были разработаны специально для предотвращения их использования подобным образом.
Есть некоторые уловки, которые вы можете сделать вместе с возвратом объекта
, которые позволят вам чтобы приблизиться. Если вас интересует этот обходной путь, прочтите Не удается вернуть анонимный тип из метода? В самом деле? .
Заявление об ограничении ответственности: Несмотря на то, что в статье, на которую я указал, действительно показано обходное решение, это не означает, что это хорошая идея. Я настоятельно рекомендую вам использовать этот подход, поскольку создание обычного типа будет более безопасным и легким для понимания.
Самое простое решение - создать класс, поместить значения в свойство , а затем верните его. Если анонимные типы усложняют вам жизнь, значит, вы используете их неправильно.
Нет, анонимные типы не могут существовать вне контекста, в котором они созданы, и в результате не могут использоваться в качестве типа, возвращаемого методом. Вы можете вернуть экземпляр как объект
, но гораздо лучше явно создать свой собственный тип контейнера для этой цели.
Я думаю, Эндрю Хэйр прав, вам нужно просто вернуть «объект». Что касается редакционного комментария, мне кажется, что работа с необработанными объектами в объектно-ориентированном коде может быть «запахом кода». Бывают случаи, когда это правильно, но в большинстве случаев вам лучше определить интерфейс для возврата или использовать какой-либо тип базового класса, если вы собираетесь возвращать связанные типы.
Извините, вы действительно не должны этого делать. Вы можете обойти это с помощью отражения или создания универсального вспомогательного метода для возврата типа за вас, но это действительно работает против языка. Просто объявите тип, чтобы было понятно, что происходит.
Нет, нет поддержки для расширения области действия анонимного класса за пределы метода. Вне метода класс действительно анонимен, и отражение - единственный способ получить доступ к его членам.