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

21

Есть ли инструменты, которые могут генерировать классы из анонимных типов?

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

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

4 ответа

17

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

    
ответ дан Jonathan Rupp 05.06.2011 в 15:44
25

Я нашел другой способ сделать это без использования 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 - преобразование анонимного в именованный тип

The Convert Anonymous to Named Type refactoring converts anonymous types to nested or top-level named types in the scope of either the current method (locally) or the whole solution (globally). In the dialog box that this refactoring provides, you can also specify whether ReSharper should generate auto-properties or properties with backing fields, and opt to generate equality and formatting method overrides. enter image description here

    
ответ дан Alireza Maddah 24.06.2013 в 15:54
0

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

    
ответ дан Robert MacLean 24.06.2013 в 15:45