2014-08-31 142 views
4

好的,这里有一个适合Visual Studio使用的小插件,或者可以用于按键序列的帮助。Visual Studio将类的所有属性转储到编辑器中

比方说,我有一个Person类:

class Person 
{ 
    string Name { get; set; } 
    int Age { get; set; } 
} 

而且我很忙编码就能愉快。我经常会遇到需要为该类的所有属性赋值的情况,或者将属性的所有值赋予其他值。

public override void CopyTo(Person myPerson) 
{ 
    myPerson.Name = "XXX"; 
    myPerson.Age = 11; 
} 

我想生成该部分:

myPerson.Name 
myPerson.Age 

即只需在一个小列表中将myPerson的所有属性转储到彼此之下。在Visual Studio编辑器中。

我安装了resharper,并且快速浏览了一个专门做这件事的工具,但是我找不到它。任何人都可以帮忙

回答

2

有一个sample command(3.复制在Visual Studio文本编辑器中选定类的剪贴板属性)为Visual Commander,您可以进一步自定义您的场景。

+0

这是迄今为止的最佳答案,如果没有更好的答案,我会很快接受它。 – user230910 2014-09-01 09:21:32

+0

感谢您的答复,我试图执行它,但我设法让自己陷入困境。我在这里提出了后续问题,http://stackoverflow.com/questions/25724189/in-visual-studio-add-in-how-can-i-retrieve-the-properties-of-the-text-selectio ?lq = 1 – user230910 2014-09-08 12:31:47

+1

如果您在2017年阅读本文,[@ Erno's answer](https://stackoverflow.com/a/35622143/325521)是要走的路。 – Shiva 2017-06-28 07:04:45

0

您只需要在Visual Studio的立即窗口中打印出对象,就不需要R#。

例如?myPerson

并且您的所有属性都将按照您的要求打印出来。

List of Values of a Class

+0

感谢您的尝试,但我想只得到属性(不是值),而我还在写代码(而不是在运行时) – user230910 2014-09-01 09:20:09

5

您可以使用the 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}"); } 

当然,这可以被缩短的一部分,但是这表明你如何使用它。

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

+0

这真是太棒了。今天刚刚开始了解C#交互式窗口,此解决方案中的代码就像老板一样工作:)谢谢@Erno! – Shiva 2017-06-28 07:00:15

+0

'Console.WriteLine($“{personProperty.PropertyType.Name} {nameof(Person)}。{personProperty.Name}'给你属性类型。 – 2017-10-22 08:14:28

0

C#立即窗口很棒!这是一种用于打印所需格式的属性的单行程序。只要发挥它以满足您的需求:

typeof(MyApp.Person).GetProperties().Select(x => x.Name).Aggregate((x, y)=>x +", " +y)