调试C#对象初始化程序

问题描述:

有没有人有任何提示在C#对象初始化程序块中调试异常?对象初始化程序的语法基本上是全部或全部,这可能使得在LINQ查询中排除故障特别困难。除了将对象创建分解为单独的方法之外,有什么我可以做的以查看哪些属性设置器正在抛出异常?调试C#对象初始化程序

禁用跨越属性设置器的选项[跳过属性和运算符(仅限管理)]可以允许您插入属性设置器。

否则,最好的选择通常是将它分解出来,并在LINQ语句之外进行调试。你可以将你的初始化参数封装到linq中的匿名类型中,并且为了调试的目的在你的linq语句之外构造你的对象。

+0

您能解释一下“将初始化参数包装成匿名类型”是什么意思吗?我会以某种方式将匿名类型传递给构造函数,还是只创建一个实用工厂方法来分配属性? – technomalogical 2009-05-18 16:55:23

将它从单独设置每个属性的对象初始化程序块中分离出来。这样你才能真正进入代码。

当你抛出一个异常时,你是否设置了VS来中断? (默认只打破未处理的异常)。调试|例外情况,并检查“抛出”。

这本身可能不是您的问题的答案,但它可能有助于调试。除此之外,您可以暂时将代码从初始化程序块中取出(仅用于调试),然后如果需要,可以在代码正常工作后恢复初始化程序块。