Создание классов из анонимных типов в C # [закрыто]

19

Существуют ли какие-либо инструменты, которые могут генерировать классы из анонимных типов?

У меня сложная структура данных, которую я создал с использованием анонимных типов. Я хотел бы использовать эту структуру данных в других местах, где анонимный тип будет недоступен. Вот почему я ищу такой инструмент генерации кода.

    
задан Ronnie Overby 05.06.2011 в 15:38
источник

4 ответа

17

Это один из рефакторингов , поддерживаемый Resharper . При вложенных анонимных типах (где один анонимный тип имеет свойства другого анонимного типа), вам просто нужно будет преобразовать внутренние типы, прежде чем вы получите возможность конвертировать внешний.

    
ответ дан Jonathan Rupp 05.06.2011 в 15:44
источник
20

Я нашел другой способ, который делает это без использования Resharper. Он протестирован на VS 2015.

Предположим, что у вас есть анонимный тип:

return new
{
    Prop = "val"
};

Просто дайте ему имя, вот так

return new AnonType
{
    Prop = "val"
};

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

Здесь вы можете видеть, о чем я говорю.

    

ответ дан Ahmad 27.03.2017 в 12:23
источник
  • Это хорошее решение, но стоит отметить, что, в отличие от resharper, visual studio не будет генерировать свойства, если они неявные. например вернуть новый AnonType {foo.Bar}; не даст AnonType свойство, называемое Bar, тогда как resharper будет. Чтобы сделать эту работу в visual studio, вам нужно вернуть новый AnonType {Bar = foo.Bar}; –  Tim 03.10.2017 в 17:08
  • вниз из-за комментария выше –  James Gardner 20.04.2018 в 05:28
8

Resharper - конвертировать анонимный в именованный тип

  

Преобразование анонимных имен в именный тип рефакторинга преобразует анонимный   типов для вложенных или именных типов верхнего уровня в рамках   текущий метод (локально) или целое решение (глобально). в   диалоговое окно, которое предоставляет этот рефакторинг, вы также можете указать   должен ли ReSharper генерировать автоматические свойства или свойства с помощью   поля поддержки и выбор метода равенства и форматирования   переопределение.   

    
ответ дан Alireza Maddah 24.06.2013 в 15:54
источник
0

CodeRush поддерживает это с помощью рефакторинга имен анонимного типа .     

ответ дан Robert MacLean 24.06.2013 в 15:45
источник