Как я могу сломать внутри блока автоматического конструктора C #? - PullRequest
1 голос
/ 16 февраля 2012

Мне было интересно, есть ли какой-нибудь способ поставить точку останова внутри блока автоматического конструктора / инициализатора объекта?

Пример:

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

Я хочу поставить точку останова на 4-й строке,Это очень полезно, когда для каждого свойства задано около 150 полей с различной логикой, а тип создаваемого вами экземпляра не находится под вашим контролем (например, сущность EF4), поэтому вы не можете создать собственный конструктор.Есть идеи?

Ответы [ 4 ]

4 голосов
/ 16 февраля 2012

Обходной путь, который вы можете использовать для решения этой проблемы, - написать код, подобный следующему, чтобы упростить отладку:

var x = new Person();
x.Name = "John";
x.Age = DateTime.Now - Birthdate;
1 голос
/ 16 февраля 2012

Если свойство Name не является автоматическим, вы можете поместить точку останова в set этого свойства.

1 голос
/ 16 февраля 2012

Обернуть значение в строке, где вы хотите, чтобы точка останова в функции самовызывающегося:

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

Теперь вы сможете "шагнуть" в него. Это не будет иметь большого значения, так как x будет оставаться нулевым до конца блока.

0 голосов
/ 16 февраля 2012

Если вы делаете это таким образом, то вы не можете.Вы можете выйти из точки останова на весь блок и пройти через нее с помощью F11.

Почему бы вам не сделать следующее

Person p = new Person();
p.Name = "John";
p.//Blah
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...