簡體   English   中英

我如何在C#自動構造函數塊中破解?

[英]How can I break inside an C# automatic constructor block?

我想知道是否有任何方法可以在自動構造函數/對象初始化程序塊中放置斷點?

例:

var x = new Person()
{
  Name = 'John',
  Age = DateTime.Now - Birthdate
}

我想在第四行設置斷點。 當為每個屬性設置150個具有不同邏輯的字段並且創建實例的類型不受您的控制(例如EF4實體)時,這非常有用,因此您無法創建自定義構造函數。 有任何想法嗎?

可用於此問題的解決方法是編寫如下代碼以簡化調試:

var x = new Person();
x.Name = "John";
x.Age = DateTime.Now - Birthdate;

在自調用函數中要斷點的行上包裝值:

var x = new Person() {
    Name = new Func<string>(() =>"John").Invoke(),
    Age = DateTime.Now - Birthdate
};

現在,您將可以“進入”它。 不過,它不會有太大用處,因為x會一直保持為null直到塊結束。

如果Name屬性不是自動的,則可以在該屬性的set內放置一個斷點。

如果您那樣做,那您就做不到。 您可以在整個塊上設置一個斷點,然后使用F11逐步執行該斷點。

你為什么不做以下事情

Person p = new Person();
p.Name = "John";
p.//Blah

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM