簡體   English   中英

如何輕松地從Visual Studio即時窗口收集信息

[英]How do I easily Collection information from the Visual Studio immediate window

有時在集合上執行ToList(),但不會返回很多有用的信息。 如何從集合和子集合中獲得有用的信息?

能夠在立即窗口中使用LINQ很好,但到目前為止,我還沒有看到可靠的解決方案。 肯定會很好。 但是,如果您需要快速的一些信息,則可以使用以下擴展方法。 不幸的是,這不會過濾您的列表。

  public static class EnumerableExtensions
{
    public static List<String> PropertyNames(this IEnumerable list)
    {
        var items = list.OfType<Object>();
        return items.Any()
            ? items.First().GetType()
                .GetProperties(BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public)
                .Select(p => p.Name).ToList()
            : new List<string>();
    }

    public static List<Object> Peek(this IEnumerable list, String name)
    {
        var data = from object item in list let property = item.GetType()
                   .GetProperty(name, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public) 
               where property != null select property.GetValue(item, null);
        return data.OfType<Object>().ToList();
    }
}

然后,您可以在立即窗口中按以下方式開始獲取信息:(不要忘記擴展方法引用)

myList.Peek("CustomObject"); // Get a list of CustomObject child property.

並且如果需要屬性。

myList.Properties() // Get a list of property names.

而且您可以將它們鏈接起來。

myList.Peek("CustomObject").PropertyNames(); // Get names => Found "Height" property.
myList.Peek("CustomObject").Peek("Height");  // Get a list of heights. 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM