4
我正在嘗試通過以下IEnumerable擴展方法,我稱爲DumpIt。調試器不會逐步完成它。我怎樣才能讓調試器進入這個擴展方法?C#LINQ通過IEnumerable擴展方法調試
我的單元測試:
[Test]
public void TestDumpIt()
{
var words =
new string[] {" KOOKABURRA", "Frogmouth", "kingfisher ", "loon", "merganser"};
var result = words
.DumpIt(d => "original: " + d)
.Select(word => word.Trim())
.DumpIt(d => "trimmed: " + d)
.Select(word => word.ToLower())
.DumpIt(d => "lower cased: " + d)
.Where(word => word.StartsWith("k"))
.DumpIt(d => "starts with k: " + d)
.OrderBy(word => word)
.DumpIt(d => "orderd: " + d);
}
擴展方法:
public static IEnumerable<T> DumpIt<T>(this IEnumerable<T> input,
Func<T, string> toString
)
{
foreach (var item in input)
{
Output.ActivePane.Activate();
Output.ActivePane.OutputString(
ShowWhiteSpace ? '[' + toString(item) + ']' : toString(item));
yield return item;
}
}
感謝您的幫助!
調試器不會停止在擴展方法主體本身的中斷點上嗎? – nieve
從make make clean開始,然後重建整個事物。有時一個調試文件沒有得到更新,損壞,不同步等,程序工作,它只是不能正確調試。邊注;一次只調用每個項目的選擇器功能被認爲是很好的做法。這很容易做到這一點;只需將結果保存到一個變量中,並將它們打印兩次而不是兩次計算。 – Servy
我在LINQ上看到你正在使用我的[舊文章]中的代碼(https://www.simple-talk.com/dotnet/net-framework/linq-secrets-revealed-chaining-and-debugging/)調試。我剛剛做了一篇關於該文章的續篇 - 6年後(!) - 在整潔的Visual Studio擴展的幫助下將LINQ調試提升到了一個新層次 - 請參閱[LINQ調試和可視化](https:// www .simple-talk.com/dotnet/net-development/linq-debugging-visualization /) –