#c# #visual-studio-2010 #ide #code-generation
#c# #visual-studio-2010 #ide #генерация кода
Вопрос:
Возможно ли получить список всех общедоступных элементов типа в IDE Visual Studio?
При написании тестов мне часто нужно присвоить всем общедоступным полям / установщикам в классе / структуре некоторое значение.
Лучше всего было бы, если бы я мог ввести:
MyType x = new MyType();
а затем автоматически создайте что-то вроде
x.StrProp = "StrProp";
x.IntProp = 0;
x.DtProp = DateTime.Now;
x.OtherProp = new Othertype()
Но простое получение списка, а затем использование редактирования столбцов, очень помогло бы
Редактировать: Выяснилось, что это было не очень сложно сделать с помощью макроса
Ответ №1:
Как насчет запуска сеанса отладки, прерывания в начале, а затем вызова чего-то вроде
typeof(System.Windows.Forms.Control)
.GetProperties(System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.Instance)
в ближайшем окне? 🙂
Результат выглядит примерно так:
{System.Reflection.PropertyInfo[0x0000004a]}
[0x00000000]: {System.Windows.Forms.AccessibleObject AccessibilityObject}
[0x00000001]: {System.String AccessibleDefaultActionDescription}
[0x00000002]: {System.String AccessibleDescription}
[0x00000003]: {System.String AccessibleName}
[0x00000004]: {System.Windows.Forms.AccessibleRole AccessibleRole}
[0x00000005]: {Boolean AllowDrop}
К сожалению, вы не можете использовать лямбда-выражения в непосредственном окне — это упростило бы получение свойств в удобном для вас формате. Но тогда я бы предложил написать действительно простой инструмент, который загружает вашу сборку, позволяет вам выбрать тип и просто выводит код в нужном формате (и / или копирует его в буфер обмена или в редактор VS). Этот инструмент, по крайней мере, сделает именно то, что вам нужно. Затем настройте инструмент, например, как внешний инструмент в Visual Studio, чтобы упростить его запуск с текущим проектом.