从C#中的匿名类生成类

Ron*_*rby 22 .net c# anonymous-types visual-studio-2010 visual-studio

有没有可以从匿名类型生成类的工具?

我有一个复杂的数据结构,我使用匿名类型创建.我想在匿名类型超出范围的其他地方使用此数据结构.这就是为什么我在寻找这样的代码生成工具.

Ahm*_*mad 37

我发现了另一种不使用Resharper就可以做到这一点的方法.它在VS 2015上进行了测试.

假设您有一个这样的匿名类型:

return new
{
    Prop = "val"
};
Run Code Online (Sandbox Code Playgroud)

只要给它一个名字,就像这样

return new AnonType
{
    Prop = "val"
};
Run Code Online (Sandbox Code Playgroud)

然后在第一行附近出现一个灯泡,当你点击它时,它会显示为你生成这个类的选项,无论你想要什么.

在这里你可以看到我在说什么.

示范

  • 这是一个很好的解决方案,但值得注意的是,与resharper不同,visual studio如果是隐式的,则不会生成属性.例如`return new AnonType {foo.Bar};`不会给AnonType一个名为Bar的属性,而resharper会给.要使它在visual studio中工作,你需要`返回新的AnonType {Bar = foo.Bar};` (7认同)

Jon*_*upp 17

这是Resharper支持的重构之一.对于嵌套的匿名类型(其中一个匿名类型具有另一个匿名类型的属性),您只需要在获得转换外部类型的选项之前转换内部类型.


Ali*_*dah 10

Resharper - 将匿名转换为命名类型

将匿名转换为命名类型重构将匿名类型转换为当前方法(本地)或整个解决方案(全局)范围内的嵌套或顶级命名类型.在此重构提供的对话框中,您还可以指定ReSharper是应生成具有支持字段的自动属性还是属性,并选择生成相等和格式化方法覆盖. 在此输入图像描述