Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/34: Рейтинг темы: голосов - 34, средняя оценка - 4.85
0 / 0 / 0
Регистрация: 17.05.2010
Сообщений: 3

Создание описания классов

24.12.2010, 22:43. Показов 6829. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте, у меня такой вопрос (речь об интерфесе самого visual 2008). Скажем при наведении мыши на стандартный класс (пример,класс Convert) в ToolTip-е вылетит первой строкой тип обьекта + полный путь в пространстве имен (class System.Convert) а ниже описалово. Как это описалово для своего класса добавить, аналогичный вопрос для описалова элементов класса (переменные, функции). Заранее спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
24.12.2010, 22:43
Ответы с готовыми решениями:

Описания классов
24. Разработать класс для представления колеса (окружность со спицами). 25. Разработать класс для представления условного изображения...

Атрибуты для описания классов и методов
Подскажите какие атрибуты нужно дописывать классам и методам, чтобы при наведении на них появлялось подобное тестовое их описание, как...

Построить систему классов для описания плоских геометрических фигур
Построить систему классов для описания плоских геометрических фигур: круга, квадрата, прямоугольника. Предусмотреть методы для создания...

4
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
27.12.2010, 12:28
Возник точно такой же вопрос, но ответов на него нет.
Может всё же кто-то знает, есть ли вообще такая функция в VS?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
27.12.2010, 12:54
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
    /// <summary>
    /// Класс для мигания светодиодами на клавиатуре.
    /// </summary>
    unsafe static class FlashLights
    {
        const uint GENERIC_WRITE = 0x40000000;
        const uint OPEN_EXISTING = 0x3;
 
        const uint IOCTL_KEYBOARD_QUERY_INDICATORS = 0xB0040;
        const uint IOCTL_KEYBOARD_SET_INDICATORS = 0xB0008;
 
        enum DOS_DEVICES : uint
        {
            RAW_TARGET_PATH = 0x00000001,
            REMOVE_DEFINITION = 0x00000002,
            EXACT_MATCH_ON_REMOVE = 0x00000004,
            NO_BROADCAST_SYSTEM = 0x00000008,
            LUID_BROADCAST_DRIVE = 0x00000010
        }
        /// <summary>
        /// Индикатор, который будет мигать.
        /// </summary>
        public enum KEYBOARD_KEY : uint
        {
            /// <summary>
            /// Светодиод CapsLock.
            /// </summary>
            CAPS_LOCK_ON = 4,
            /// <summary>
            /// Светодиод NumLock.
            /// </summary>
            NUM_LOCK_ON = 2,
            /// <summary>
            /// Светодиод ScrollLock.
            /// </summary>
            SCROLL_LOCK_ON = 1
        }
 
        internal struct KEYBOARD_INDICATOR_PARAMETERS
        {
            internal ushort UnitId;     // Unit identifier.
            internal ushort LedFlags;   // LED indicator state.
        }
 
        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool DefineDosDevice (
            [In] DOS_DEVICES dwFlags,
            [In] string lpDeviceName,
            [In] string lpTargetPath
            );
 
        [DllImport("kernel32.dll", SetLastError = true)]
        static extern IntPtr CreateFile (
            [In] string lpFileName,
            [In] uint dwDesiredAccess,
            [In] uint dwShareMode,
            [In] IntPtr lpSecurityAttributes,
            [In] uint dwCreationDisposition,
            [In] uint dwFlagsAndAttributes,
            [In] IntPtr hTemplateFile
            );
 
        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool CloseHandle ( [In] IntPtr hObject );
 
        [DllImport("kernel32.dll", SetLastError = true)]
        [return: MarshalAs(UnmanagedType.Bool)]
        static extern bool DeviceIoControl (
            [In] IntPtr hDevice,
            [In] uint dwIoControlCode,
            [In] KEYBOARD_INDICATOR_PARAMETERS* lpInBuffer,
            [In] uint nInBufferSize,
            [Out] KEYBOARD_INDICATOR_PARAMETERS* lpOutBuffer,
            [In] uint nOutBufferSize,
            [Out] uint* lpBytesReturned,
            [In, Out] IntPtr lpOverlapped
            );
 
        static IntPtr hKbdDev;
        /// <summary>
        /// Должно вызываться первым для того чтобы подготовить устройство для использования.
        /// </summary>
        /// <returns>Номер ошибки.</returns>
        public static int OpenKeyboardDevice () {
            if (!DefineDosDevice(DOS_DEVICES.RAW_TARGET_PATH, "Kbd", "\\Device\\KeyboardClass0"))
                return Marshal.GetLastWin32Error();
 
            hKbdDev = CreateFile("\\\\.\\Kbd", GENERIC_WRITE, 0U, IntPtr.Zero, OPEN_EXISTING, 0U, IntPtr.Zero);
 
            if (hKbdDev == (IntPtr)(-1))
                return Marshal.GetLastWin32Error();
 
            return 0;
        }
        /// <summary>
        /// Закрывает устройство.
        /// </summary>
        /// <returns>Номер ошибки.</returns>
        public static int Close () {
            int err = 0;
 
            if (!DefineDosDevice(DOS_DEVICES.REMOVE_DEFINITION, "Kbd", null))
                err = Marshal.GetLastWin32Error();
 
            if (!CloseHandle(hKbdDev))
                err = Marshal.GetLastWin32Error();
 
            return err;
        }
        /// <summary>
        /// Мигание одного из 3х светодиодов: NUM, SCROLL, CAPS.
        /// </summary>
        /// <param name="LightFlag">Индикатор.</param>
        /// <param name="Duration">Промежуток времени между затуханием и появлением.</param>
        /// <returns>Номер ошибки.</returns>
        public static int FlashKeyboardLight ( KEYBOARD_KEY LightFlag, int Duration ) {
            KEYBOARD_INDICATOR_PARAMETERS
                inBuff = new KEYBOARD_INDICATOR_PARAMETERS(),
                outBuff = new KEYBOARD_INDICATOR_PARAMETERS();
 
            uint LedFlag = (uint)LightFlag;
            uint ledFlagsMask;
            uint toggle;
            uint dataLen = (uint)Marshal.SizeOf(typeof(KEYBOARD_INDICATOR_PARAMETERS));
            uint retLength = 0;
 
            inBuff.UnitId = 0;
            outBuff.UnitId = 0;
 
            if (!DeviceIoControl(hKbdDev, IOCTL_KEYBOARD_QUERY_INDICATORS,
                &inBuff, dataLen, &outBuff, dataLen, &retLength, IntPtr.Zero))
                return Marshal.GetLastWin32Error();
 
            ledFlagsMask = (outBuff.LedFlags & (~LedFlag));
            toggle = (outBuff.LedFlags & LedFlag);
 
            for (int i = 0; i < 2; i++) {
                toggle ^= 1;
                inBuff.LedFlags = (ushort)(ledFlagsMask | (LedFlag * toggle));
 
                if (!DeviceIoControl(hKbdDev, IOCTL_KEYBOARD_SET_INDICATORS,
                    &inBuff, dataLen, null, 0, &retLength, IntPtr.Zero))
                    return Marshal.GetLastWin32Error();
 
                System.Threading.Thread.Sleep(Duration);
            }
 
            return 0;
        }
    }
Соответственно при наведении на FlashLights будет выведен хинт "Класс для мигания светодиодами на клавиатуре.", и при наведении на методы, будут показаны соответствующие им описания.

Комментарии XML-документации (Руководство по программированию в C#)
1
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
27.12.2010, 14:54
Спасибо, понял, сейчас подробней почитаю про XML-документацию!

Добавлено через 19 минут
Ещё вопрос-уточнение...
Как я понял, для создания подсказок, которые появляются при наведении курсора мыши в коде и с которыми взаимоействует IntelliSense, имеет смысл использовать только <summary>, а всё остальное уже для XML-документации?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
27.12.2010, 15:33
Это всё и есть XML-документация. Например <param name="LightFlag">Описание параметра</param> - данная подсказка будет выводится когда ты открываешь скобку и начинаешь вводить параметры в метод, каждому параметру будет выводится соответствующая подсказка.

XML-документацию можно сохранить в отдельный файл. Это может пригодится когда пишешь dll и она будет использована в других проектах. Если положить XML файл рядом с dll, то описания функций будут автоматически подгружаться при написании приложения с использованием твоей dll, и будут выводится при использовании классов\методов и т.д. из dll в твоем проекте.
Для этого нужно перейти в Solution Explorer -> Build в секции Output будет флажок "XML documentation file:" который отвечает за создание файла XML-документации.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.12.2010, 15:33
Помогаю со студенческими работами здесь

Создать MDI приложение и иерархию классов для описания аэровокзала
С# На основании рассмотренных примеров создать MDI-приложение, позволяющее - сохранять вводимые данные в текстовом файле, -...

Инициализация классов до их описания
Доброго времени суток! Недавно начал снова работать с ООП в C++, но столкнулся со следующей проблемой: class Inventory { public: ...

Описания членов - данных пользовательских классов
Помогите пожалуйста ЖИВОТНОЕ имя – char* класс – char* средний вес – int 2.Постановка задачи. Следует дать конкретную...

Описания членов - данных пользовательских классов
⦁ Определить пользовательский класс в соответствии с вариантом задания (смотри приложение). ⦁ Определить в классе следующие...

Различия описания классов в DEV и Visual C++
Собственно что хотелось бы спросить скачал DEV среду, а решебник нашел по Visual. Сейчас смотрю построение перегруженного конструктора,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru