如何调试对象初始化代码?

mag*_*tic 35 .net c# debugging object-initializers visual-studio

有没有办法在Visual Studio中逐步调试对象初始化程序代码?

例:

return new Veranstaltung()
            {
                ID = tblVeranstaltung.VeranstaltungsID,
                Titel = tblVeranstaltung.Titel,
                KursNummer = tblVeranstaltung.Kursnummer,
                ErsterTermin = tblVeranstaltung.ersterTermin,
                Dauer = tblVeranstaltung.schulungsTage,
                StartZeit = tblVeranstaltung.BeginnZeit,
                EndZeit = tblVeranstaltung.Endzeit,
                KostenNettoValue = tblVeranstaltung.PreisNetto ?? default(decimal),
                IsLastMinute = tblVeranstaltung.lastMinute == 1,
                IsVerkuerzt = tblVeranstaltung.istVerkuerzt == 1,
                IsGeschlossen = tblVeranstaltung.istGeschlosseneVeranstaltung == 1,
                IsIntern = tblVeranstaltung.istInterneVeranstaltung == 1,
                StandortID = Convert.ToInt32(tblVeranstaltung.StandortID),
                LastMinuteRabatt = tblVeranstaltung.lastMinuteRabatt ?? default(decimal)
            };
Run Code Online (Sandbox Code Playgroud)

有时我在这种代码中遇到错误(例如当转换为int失败时)并且VS似乎无法单步执行它,它只会抛出整行的错误而我必须尝试哪些初始化失败.

是否有一种简单的方法来调试它,或者最好避免对象初始化器进行大型或复杂的初始化?

我正在使用VS 2010和C#4.0.

Hap*_*plo 14

应保留对象初始化器以进行简单的对象初始化.如果您的对象构造函数具有可能失败的代码(例如抛出异常),请不要使用它.更好地依赖于对象构造模式,根据您的需要,可能是工厂方法,抽象工厂等...这也确保您的类的所有用户都无法构建处于无效状态的实例(例如,忘记初始化一个成员,或者他们用不正确的值初始化相关成员等...)


Hen*_*man 8

或者最好避免使用对象初始化程序进行大型或复杂的初始化?

是的,它很难维护(和调试).


Mar*_*vic 7

不确定在Visual Studio 2010 中是否可行,但在Visual Studio 2017 中,您可以通过在 Visual Studio 调试设置中禁用跳过属性设置器的选项来实现:

在此处输入图片说明