Visual Studio将类的所有属性转储到编辑器中

use*_*910 9 c# resharper add-in visual-studio visual-studio-2012

好的,这里有一个为视觉工作室提供了许多方便的小插件的人,或者可以帮助按键序列.

假设我有一个Person类:

class Person
{
    string Name { get; set; }
    int Age { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正忙着快​​乐地编码.我经常遇到需要为该类的所有属性赋值的情况,或者将属性的所有值分配给其他属性.

public override void CopyTo(Person myPerson)
{
    myPerson.Name = "XXX";
    myPerson.Age = 11;
}
Run Code Online (Sandbox Code Playgroud)

我想生成这个部分:

myPerson.Name
myPerson.Age
Run Code Online (Sandbox Code Playgroud)

即只是将myPerson的所有属性转储到一个小列表中.在Visual Studio编辑器中.

我安装了resharper,我快速浏览了一个专门做这个的实用程序,但我找不到一个.有人可以帮忙吗?

Ern*_*rno 10

您可以使用C#Interactive Window,它是Visual Studio 2015的一部分

> #r "C:/MyApp/bin/Debug/Foo.dll"
> using MyApp;
> var personType = typeof(Person);
> var personProperties = personType.GetProperties();
> foreach(var personProperty in personProperty) { Console.WriteLine($"{nameof(Person)}.{personProperty.Name}"); }
Run Code Online (Sandbox Code Playgroud)

当然这可以缩短,但这会告诉你如何使用它.

另外,要设置类所在的项目,可以右键单击"解决方案资源管理器",然后选择"使用项目初始化交互".


Rob*_*ode 5

以下是在 Visual Studio 2017 中对我有用的内容:

打开类编辑器

Ctrl + Shift + C

然后在弹出的类视图窗口中选择类名,该类名包含显示结构中所需的属性。类的所有属性都将列在下面的窗口窗格中。Shift + 单击第一个属性,然后按住 shift + 单击列表中的最后一个。然后右键单击并从弹出菜单中选择复制选项。您可以从那里粘贴到 Visual Studio 中。第一个粘贴将如下所示:

人名 人名 年龄

从那里你可以在每个属性后放置一个回车符,这样它们就会在不同的行中结束。


wxt*_*wxt 4

C# 立即窗口很棒!这是一行代码,用于以某种所需格式打印属性。只需使用它来满足您的需求:

typeof(MyApp.Person).GetProperties().Select(x => x.Name).Aggregate((x, y)=>x +", " +y)
Run Code Online (Sandbox Code Playgroud)