我正在研究在頁面中嵌入JSON的應用程序。一些簡單的例子:調試序列化期間消耗的yield return的最佳方法是什麼?
public ViewResult Page(IEnumerable<LolCat> lolCats)
{
var json = new
{
localCats = ToJson(lolCats),
};
return View(json); // this gets serialized somewhere in the ASP pipeline
}
IEnumerable<object> ToJson(IEnumerable<LolCat> lolCats)
{
foreach (var lolCat in lolCats)
yield return new { name = lolCat.name };
}
的JSON 得到自動序列倒在ASP.NET管道線路的某處。
在這個例子中,假設有時一個NULL
滑入lolCats
,拋出異常。問題是ToJson
函數可能會在整個應用程序的很多不同的地方被調用。
如何找出ToJson是哪一個呼叫是異常的責任人?調用堆棧在實際使用此IEnumerable的序列化程序中結束,因此您看不到'原始堆棧跟蹤'。
一個簡單的解決將是內Page
打電話ToList()
。但我正在尋找一種不會打破方法惰性的方法。
不能:)對不起,嘲笑了一些例子。我會解決它!謝謝:) –
返回lolCats.Select(lolCat => new {name = lolCat.name})有什麼問題;'然後?這也將推遲執行。 – dasblinkenlight
對不起,也許我應該讓我的問題更清楚一點。現實世界的例子更深入。我正在尋找一種工作方式在這些情況下 - 不是一個真正具體的例子來解決:) –