Отладчик Visual Studio, автоматическое назначение переменных - PullRequest
0 голосов
/ 03 августа 2011

Да, я вижу другую тему: Отладчик Visual Studio - автоматическое назначение переменных

Но мне нужно было решение сегодня, и я нашел его, прежде чем увидел его, и мне интересно, есть ли лучшее решение там?

Мой случай: У меня есть список сущностей, и я установил некоторые свойства, связанные с политикой, на основе множества факторов. Но он еще не реализован или просто я хочу протестировать интерфейс, когда у субъекта есть право, а когда нет (измените его как можно быстрее, чтобы выполнить реальную работу).

Итак, я настроил сущность так, как будто она имеет право, чтобы я мог протестировать пользовательский интерфейс с этим. Но я не хочу разбивать каждый элемент списка и менять флаг с true на false (чтобы проверить другой случай). Я искал способ изменить переменную из отладчика автоматически. Я придумал это решение:

  1. Установить точку останова
  2. Установить для него условие, которое является «поддельным», но оно изменит значение переменной
  3. запуск в режиме отладки
  4. если мне нужен случай 1. Я включаю точку останова, если мне нужна другая, я отключаю точку останова

Упрощенный пример:

namespace AutoVariable
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                new Program().Entrance();
                Console.ReadLine();
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e.Message);
            }
        }

        public void Entrance()
        {
            var entities = new List<Entity>
            {
                new Entity() { Name = "A" },
                new Entity() { Name = "B" },
                new Entity() { Name = "C" }
            };

            entities.ForEach(setRight);
            entities.ForEach(Console.WriteLine);
        }

        protected void setRight(Entity entity)
        {
            //not implemented
            bool hasRight = true;
            entity.HasRight = hasRight;
        }
    }

    class Entity
    {
        public bool HasRight { get; set; }

        public string Name { get; set; }

        public override string ToString()
        {
            return string.Format("{0} - {1}", Name, HasRight);
        }
    }
}

Я установил точку останова для условия: entity.HasRight = hasRight;

с этим условием: (hasRight = false)

поэтому hasRight будет ложным, а точка останова никогда не получит попадание.

Но его можно использовать и в других случаях, например, в посте Джейсона Ирвина вы можете использовать что-то вроде: (userName = "Jason").Length < 1

Итак, мой вопрос, является ли это хорошим решением или я что-то упускаю из «нативного» набора инструментов отладчика?

Заранее спасибо!

негра

1 Ответ

1 голос
/ 03 августа 2011

Вы хотите выполнить действие с помощью отладчика?Есть вещь под названием Trace Points.

Это объясняется здесь: http://weblogs.asp.net/scottgu/archive/2010/08/18/debugging-tips-with-visual-studio-2010.aspx и переходите к «TracePoints - Пользовательские действия при достижении точки останова»

Это то, что вам нужно?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...