2011-05-20 118 views
2

是否有可能在Visual Studio IDE中獲取某個類型的所有公共成員列表?在Visual Studio中列出設計時所有的公共類屬性和字段

在編寫測試時,我經常需要將類/結構體中的所有公共字段/設置器設置爲某個值。

的最好的事情是,如果我可以輸入:

MyType x = new MyType(); 

,然後自動生成類似

x.StrProp = "StrProp"; 
x.IntProp = 0; 
x.DtProp = DateTime.Now; 
x.OtherProp = new Othertype() 

但剛開列表,然後使用列編輯將有很大的幫助

編輯: 發現這不是很難做一個宏

回答

1

怎麼樣在即時窗口中啓動調試會話,打破開頭,然後調用類似

typeof(System.Windows.Forms.Control) 
    .GetProperties(System.Reflection.BindingFlags.Public | 
     System.Reflection.BindingFlags.Instance) 

? :)

的結果是這樣的:

{System.Reflection.PropertyInfo[0x0000004a]} 
    [0x00000000]: {System.Windows.Forms.AccessibleObject AccessibilityObject} 
    [0x00000001]: {System.String AccessibleDefaultActionDescription} 
    [0x00000002]: {System.String AccessibleDescription} 
    [0x00000003]: {System.String AccessibleName} 
    [0x00000004]: {System.Windows.Forms.AccessibleRole AccessibleRole} 
    [0x00000005]: {Boolean AllowDrop} 

不幸的是,你不能在即時窗口中使用lambda表達式 - 這將可以很容易地在形式獲得的屬性會更加容易。但是,接下來,我會建議編寫一個非常簡單的工具來加載程序集,讓您選擇類型並只輸出所需格式的代碼(和/或將其複製到剪貼板或VS編輯器中)。這個工具至少可以滿足你的需求。然後配置工具,例如作爲Visual Studio中的外部工具,使其更容易與當前項目一起運行。

+0

可能是一些如何使用代碼片段? – Kuncevic 2012-10-23 23:26:07

+0

謝謝。這對我有效。 – 2014-08-14 22:26:18

相關問題