39

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)
            };

この種のコードでエラーが発生することがあります (たとえば、int への変換が失敗した場合)。VS はそれをステップ実行できないようです。行全体でエラーがスローされるだけで、どの初期化が失敗したかを試す必要があります。 .

これをデバッグする簡単な方法はありますか、それとも大規模または複雑な初期化のためにオブジェクト初期化子を避ける方が良いですか?

VS 2010 と C# 4.0 を使用しています。

4

5 に答える 5

18

オブジェクト初期化子は、単純なオブジェクトの初期化のために保持する必要があります。オブジェクト コンストラクターに失敗する可能性のあるコード (例: 例外のスロー) がある場合は、それを使用しないでください。必要に応じて、ファクトリ メソッド、抽象ファクトリなどのオブジェクト構築パターンに依存することをお勧めします。これにより、クラスのすべてのユーザーが無効な状態のインスタンスを構築できないことも保証されます (たとえば、メンバーの初期化を忘れるか、関連するメンバーを誤った値で初期化するなど...)

于 2011-04-03T09:32:43.047 に答える
9

それとも、大規模または複雑な初期化のためにオブジェクト初期化子を避ける方が良いですか?

はい、保守 (およびデバッグ) が難しくなります。

于 2011-03-30T16:50:24.580 に答える
4

オブジェクト初期化子のデバッグ サポートは、Visual Studio 2010 ではあまり良くありません。そのため、大規模または複雑な初期化にオブジェクト初期化子を使用しないようにするのが現実的かもしれませんが、大規模または複雑な (ネストされた) オブジェクト初期化の使用は考えていません。それ自体が悪いデザインの選択です。

ドキュメント/レコードを表すオブジェクトをマッピングする場合(あなたの例のように)、非常に読みやすい宣言スタイルになり、コードの「ノイズ」を最小限に抑え、読者がソースとターゲットの関係をより明確に確認できるようにすることがわかりました. このアプローチは、データ検証からデータ マッピングを分離することも促進します。これは望ましいことだと思います。

このスタイルでコーディングする場合、null セーフ逆参照演算子も大いに役立ちますが、それは別のトピックです。Visual Studio の将来のリリースで、これらの便利な構造のデバッグが改善されることを願っています。

于 2012-08-17T16:20:06.217 に答える