Перечислите все свойства и поля общедоступного класса во время разработки в Visual Studio - PullRequest
2 голосов
/ 20 мая 2011

Можно ли получить список всех открытых членов типа в IDE Visual Studio?

При написании тестов мне часто нужно установить для всех открытых полей / сеттеров в классе / структуре какое-то значение.

Лучше всего было бы, если бы я мог набрать:

MyType x = new MyType();

, а затем автоматически сгенерировать что-то вроде

x.StrProp = "StrProp";
x.IntProp = 0;
x.DtProp = DateTime.Now;
x.OtherProp = new Othertype()

Но просто получить список и затем использовать редактирование столбцов.очень помогло бы

Редактировать: Выяснилось, что с макросом было не очень сложно

1 Ответ

1 голос
/ 20 мая 2011

Как насчет запуска сеанса отладки, прерывания в начале, а затем вызова чего-то вроде

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, чтобы упростить работу с текущим проектом.

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