2009-05-18 152 views
10

有沒有人有任何提示在C#對象初始化程序塊中調試異常?對象初始化程序的語法基本上是全部或全部,這可能使得在LINQ查詢中排除故障特別困難。除了將對象創建分解爲單獨的方法之外,有什麼我可以做的以查看哪些屬性設置器正在拋出異常?調試C#對象初始化程序

回答

13

禁用跨越屬性設置器的選項[跳過屬性和運算符(僅限管理)]可以允許您插入屬性設置器。

否則,最好的選擇通常是將它分解出來,並在LINQ語句之外進行調試。你可以將你的初始化參數封裝到linq中的匿名類型中,並且爲了調試的目的在你的linq語句之外構造你的對象。

+0

您能解釋一下「將初始化參數包裝成匿名類型」是什麼意思嗎?我會以某種方式將匿名類型傳遞給構造函數,還是隻創建一個實用工廠方法來分配屬性? – technomalogical 2009-05-18 16:55:23

1

將它從單獨設置每個屬性的對象初始化程序塊中分離出來。這樣你才能真正進入代碼。

4

當你拋出一個異常時,你是否設置了VS來中斷? (默認只打破未處理的異常)。調試|例外情況,並檢查「拋出」。

這本身可能不是您的問題的答案,但它可能有助於調試。除此之外,您可以暫時將代碼從初始化程序塊中取出(僅用於調試),然後如果需要,可以在代碼正常工作後恢復初始化程序塊。