Список основных типов представления объектов Windows

Обновлено: 21.11.2024

Некоторая информация относится к предварительной версии продукта, которая может быть существенно изменена до ее выпуска. Microsoft не дает никаких явных или подразумеваемых гарантий в отношении представленной здесь информации.

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

Примеры

Чтобы идентифицировать сигнатуру перегрузки, в примере кода создается временный массив, содержащий два объекта Type, представляющих int ( Integer в Visual Basic).

Чтобы быть точным, массив содержит две ссылки на экземпляр Type, представляющий int в текущем домене приложения. Для любого типа существует только один экземпляр Type для каждого домена приложения.

В примере кода используется MethodInfo для вызова метода Substring для строки "Hello, World!" и отображения результата.

Примечания

Тип — это корень функциональности System.Reflection и основной способ доступа к метаданным. Используйте члены Type для получения информации об объявлении типа, о членах типа (таких как конструкторы, методы, поля, свойства и события класса), а также о модуле и сборке, в которой находится класс. развернут.

Для кода, использующего отражение для получения информации о типах и их членах, не требуются разрешения, независимо от их уровней доступа. Никаких разрешений не требуется, чтобы код использовал отражение для доступа к общедоступным членам или другим членам, чьи уровни доступа сделали бы их видимыми во время обычной компиляции. Однако, чтобы ваш код мог использовать отражение для доступа к членам, которые обычно недоступны, например к закрытым или внутренним методам или защищенным полям типа, который не наследуется вашим классом, ваш код должен иметь ReflectionPermission. См. Вопросы безопасности для отражения.

Type – это абстрактный базовый класс, допускающий несколько реализаций. Система всегда будет предоставлять производный класс RuntimeType. При отражении все классы, начинающиеся со слова Runtime, создаются только один раз для каждого объекта в системе и поддерживают операции сравнения.

В многопоточных сценариях не блокируйте объекты Type, чтобы синхронизировать доступ к статическим данным. Другой код, над которым у вас нет контроля, также может заблокировать тип вашего класса. Это может привести к взаимоблокировке. Вместо этого синхронизируйте доступ к статическим данным, заблокировав закрытый статический объект.

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

Интерфейсы, расширяющие другие интерфейсы, не наследуют методы, определенные в расширенных интерфейсах.

В этом разделе:

Какие типы представляет объект Type?

Этот класс является потокобезопасным; несколько потоков могут одновременно читать из экземпляра этого типа. Экземпляр класса Type может представлять любой из следующих типов:

Сконструированные универсальные типы и определения универсальных типов

Аргументы и параметры типов сконструированных универсальных типов, определений универсальных типов и определений универсальных методов

Получение объекта Type

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

Метод экземпляра Object.GetType возвращает объект Type, представляющий тип экземпляра. Поскольку все управляемые типы являются производными от Object, метод GetType можно вызывать для экземпляра любого типа.

В следующем примере вызывается метод Object.GetType для определения типа среды выполнения каждого объекта в массиве объектов.

Статические методы Type.GetType возвращают объект Type, который представляет тип, заданный его полным именем.

Методы Module.GetTypes, Module.GetType и Module.FindTypes возвращают объекты Type, представляющие типы, определенные в модуле. Первый метод можно использовать для получения массива объектов Type для всех общедоступных и частных типов, определенных в модуле. (Вы можете получить экземпляр Module с помощью метода Assembly.GetModule или Assembly.GetModules или с помощью свойства Type.Module.)

Объект System.Reflection.Assembly содержит ряд методов для извлечения классов, определенных в сборке, включая Assembly.GetType, Assembly.GetTypes и Assembly.GetExportedTypes.

Метод FindInterfaces возвращает отфильтрованный список типов интерфейсов, поддерживаемых типом.

Метод GetElementType возвращает объект Type, представляющий элемент.

Методы GetInterfaces и GetInterface возвращают объекты Type, представляющие типы интерфейса, поддерживаемые типом.

Метод GetTypeArray возвращает массив объектов Type, представляющих типы, заданные произвольным набором объектов. Объекты задаются массивом типа Object.

Методы GetTypeFromProgID и GetTypeFromCLSID предназначены для взаимодействия с COM. Они возвращают объект Type, представляющий тип, указанный ProgID или CLSID .

Метод GetTypeFromHandle предоставляется для совместимости. Он возвращает объект Type, представляющий тип, указанный дескриптором класса.

Метод MakeGenericType возвращает объект Type, представляющий сконструированный универсальный тип, который является открытым сконструированным типом, если его свойство ContainsGenericParameters возвращает значение true , и закрытым сконструированным типом в противном случае. Универсальный тип может быть создан, только если он закрыт.

Сравнение типовых объектов на равенство

Объект Type, представляющий тип, уникален; то есть две ссылки на объект Type ссылаются на один и тот же объект тогда и только тогда, когда они представляют один и тот же тип. Это позволяет сравнивать объекты Type, используя ссылочное равенство. В следующем примере сравниваются объекты Type, представляющие ряд целочисленных значений, чтобы определить, относятся ли они к одному и тому же типу.

Это руководство по дизайну было создано для Windows 7 и не обновлялось для более новых версий Windows. Большая часть рекомендаций в принципе остается актуальной, но презентация и примеры не отражают наши текущие рекомендации по дизайну.

Значки — это графические изображения объектов, важные не только по эстетическим причинам как часть визуальной идентичности программы, но также и по утилитарным причинам в качестве условного обозначения для передачи значения, которое пользователи воспринимают почти мгновенно. В Windows Vista представлен новый стиль значков, обеспечивающий более высокий уровень детализации и сложности Windows.

Примечание. Рекомендации по стандартным значкам представлены в отдельной статье.

Концепции дизайна

Aero — это название пользовательского интерфейса Windows Vista, представляющее как ценности, воплощенные в эстетическом дизайне, так и видение пользовательского интерфейса (UI). Aero означает: аутентичный, энергичный, задумчивый и открытый. Aero стремится создать профессиональный и красивый дизайн. Эстетика Aero создает высококачественный и элегантный интерфейс, который повышает производительность пользователей и даже вызывает эмоциональный отклик.

Значки Windows Vista отличаются от значков Windows XP следующим образом:

  • Стиль более реалистичный, чем иллюстративный, но не совсем фотореалистичный. Иконки — это символические изображения, они должны выглядеть лучше, чем фотореалистичные!
  • Значки имеют максимальный размер 256 x 256 пикселей, что делает их подходящими для дисплеев с высоким разрешением (точек на дюйм). Эти значки с высоким разрешением обеспечивают высокое визуальное качество в представлениях списка с большими значками.
  • Везде, где это целесообразно, фиксированные значки документов заменяются миниатюрами содержимого, что упрощает идентификацию и поиск документов.
  • Значки на панели инструментов менее детализированы и лишены перспективы, что позволяет оптимизировать их для уменьшения размера и визуальной различимости.
  • Улучшите визуальную коммуникацию вашей программы.
  • Оказывает сильное влияние на общее впечатление пользователей о визуальном дизайне вашей программы и на оценку ее качества.
  • Повысьте удобство использования, облегчив идентификацию, изучение и поиск программ, объектов и действий.

На следующих изображениях показано, что отличает стиль значков Aero в Windows Vista от стиля, используемого в Windows XP.

Значки Windows Vista (замок и ключ слева) аутентичны, четки и детализированы. Они визуализируются, а не рисуются, но не являются полностью фотореалистичными.

Значки Windows Vista (две слева) профессиональные и красивые, с вниманием к деталям, которые улучшают качество значков.

Эти значки Windows Vista показывают оптический баланс и воспринимаемую точность перспективы и деталей. Это позволяет им выглядеть большими или маленькими, вблизи или на расстоянии. Кроме того, этот стиль иконографии подходит для экранов с высоким разрешением.

В этих примерах показаны различные типы значков, в том числе трехмерный объект в перспективе, фронтальный (плоский) значок и значок на панели инструментов.

Рекомендации

Перспектива

Значки в Windows Vista либо трехмерные и отображаются в перспективе как твердые объекты, либо двумерные объекты, отображаемые прямо. Используйте плоские значки для файлов и для объектов, которые на самом деле плоские, например документы или листы бумаги.

Обычные трехмерные и плоские значки.

Трехмерные объекты представлены в перспективе как твердые объекты, видимые с высоты птичьего полета с двумя точками схода.

В этом примере показана перспектива и точки схода, типичные для трехмерных значков.

В меньших размерах один и тот же значок может измениться с перспективы на прямую.При размере 16 x 16 пикселей и меньше отображать значки прямо (на лицевой стороне). Для больших значков используйте перспективу.

  • Исключение: значки панели инструментов всегда обращены вперед, даже в больших размерах.

В этом примере показано, как один и тот же значок обрабатывается по-разному в зависимости от размера.

Источник света

  • Источник света для объектов в сетке перспективы находится выше, немного впереди и немного левее объекта.
  • Источник света отбрасывает тени немного сзади и справа от основания объекта.
  • Все световые лучи параллельны и падают на объект под одним и тем же углом (как солнце). Цель состоит в том, чтобы обеспечить единообразное освещение для всех значков и эффектов прожектора. Параллельные световые лучи создают тени одинаковой длины и плотности, что обеспечивает дополнительное единство нескольких значков.

Тени

Общие

Используйте тени, чтобы визуально отделить объекты от фона и сделать трехмерные объекты неподвижными, а не парящими в пространстве.

Для теней используйте диапазон непрозрачности от 30 до 50 процентов. Иногда следует использовать другой уровень тени в зависимости от формы или цвета значка.

При необходимости растушуйте или укоротите тень, чтобы она не обрезалась по размеру окна значка.

Не используйте тени в значках размером 24 x 24 или меньше.

Типичные тени значков.

Плоские значки

  • Плоские значки обычно используются для значков файлов и плоских объектов реального мира, таких как документ или лист бумаги.
  • Подсветка плоского значка исходит из левого верхнего угла под углом 130 градусов.
  • Меньшие значки (например, 16 x 16 и 32 x 32) упрощены для удобства чтения. Однако, если они содержат отражение внутри значка (часто упрощенное), у них может быть плотная тень. Непрозрачность тени варьируется от 30 до 50 процентов.
  • Эффекты слоя можно использовать для плоских значков, но их следует сравнивать с другими плоскими значками. Тени для объектов будут несколько различаться в зависимости от того, что выглядит лучше всего и наиболее соответствует установленному размеру и другим значкам в Windows Vista. В некоторых случаях может быть даже необходимо изменить тени. Это особенно верно, когда объекты накладываются поверх других.
  • Для достижения желаемого результата можно использовать тонкий диапазон цветов. Тени помогают объектам сидеть в пространстве. Цвет влияет на воспринимаемый вес тени и может исказить изображение, если оно слишком тяжелое.

Параметр "Тень" в диалоговом окне "Стиль слоя" и обычная тень для плоского значка.

Основные диапазоны теней плоских значков

< tr> < tr>
Характеристика Диапазон
Цвет
Черный
Режим наложения
Умножение
Непрозрачность
22-50 процентов, в зависимости от цвета элемента
Угол
120–130 (использовать глобальное освещение)
Расстояние
3 для 256 x 256, начиная с 1 для 32 x 32
Разворот
0
Размер
7 для 256 x 256, до 2 для 32 x 32

Трехмерные значки

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

Эти примеры помогают продемонстрировать варианты, созданные на основе формы и положения самого объекта. Иногда тень необходимо растушевать или укоротить, чтобы она не обрезалась по размеру окна значка.

Цвет и насыщенность

Цвета обычно менее насыщенные, чем в Windows XP.

Используйте градиенты, чтобы сделать изображение более реалистичным.

Хотя для стандартных значков не существует определенной цветовой палитры, помните, что они должны хорошо сочетаться друг с другом во многих контекстах и ​​темах. Отдайте предпочтение стандартному набору цветов; не перекрашивайте стандартные значки, например значки предупреждений, потому что это мешает пользователям интерпретировать смысл. Дополнительные рекомендации см. в разделе Цвет.

Строгих ограничений по цветовой палитре нет. Избегается только полная насыщенность (вверху справа).

Панели инструментов или файлы AVI: используйте пурпурный (R255 G0 B255) цвет прозрачности фона.

Требования к размеру

Общие

  • Уделяйте особое внимание значкам с высокой видимостью, например значкам основных приложений, значкам файлов, которые могут отображаться в проводнике Windows, а также значкам, отображаемым в меню "Пуск" или на рабочем столе.
    • Значки приложений и элементы панели управления. Полный набор включает 16 x 16, 32 x 32, 48 x 48 и 256 x 256 (код масштабируется от 32 до 256). .требуется формат файла ico. Полный набор для классического режима: 16 x 16, 24 x 24, 32 x 32, 48 x 48 и 64 x 64.
    • Параметры значков элементов списка: используйте живые миниатюры или значки файлов для типа файла (например, .doc); полный комплект.
    • Значки панели инструментов: 16 x 16, 24 x 24, 32 x 32. Обратите внимание, что значки панели инструментов всегда плоские, а не трехмерные, даже при размере 32 x 32.
    • Значки диалогового окна и мастера: 32 x 32 и 48 x 48.
    • Наложения: основной код оболочки (например, ярлык) 10 x 10 (для 16 x 16), 16 x 16 (для 32 x 32), 24 x 24 (для 48 x 48), 128 x 128 (для 256 x 256). Обратите внимание, что некоторые из них немного меньше, но близки к этому размеру, в зависимости от формы и оптического баланса.
    • Область быстрого запуска: размер значков будет уменьшен с 48 x 48 в динамических наложениях Alt+Tab, но для более четкой версии добавьте 40 x 40 в файл .ico.
    • Значки воздушных шаров: 32 x 32 и 40 x 40.
    • Дополнительные размеры. Их полезно иметь под рукой в ​​качестве ресурсов для создания других файлов (например, аннотаций, полос панели инструментов, наложений, файлов с высоким разрешением и особых случаев): 128 x 128, 96 x 96, 64 x 64, 40 x 40, 24 x 24, 22 x 22, 14х14, 10х10 и 8х8. Вы можете использовать .ico, .jpg, .bmp или другие форматы файлов, в зависимости от кода в этой области.

    Для высокого разрешения

    В следующих таблицах показаны примеры коэффициентов масштабирования, применяемых к двум распространенным размерам значков. Обратите внимание, что не все эти размеры должны быть включены в файл .ico. Код будет масштабировать более крупные.

    < td>96
    dpi Размер значка Коэффициент масштабирования
    16x16
    1,0 (100%)
    120
    20x20
    1,25 (125%)
    144
    24x24
    1,5 (150%)
    192
    32x32
    2.0 (200%)
    dpi Размер значка Масштабный коэффициент
    96
    32x32
    1,0 (100%)
    120
    40x40
    1,25 (125%)
    144
    48x48
    1,5 (150%)
    192
    64x64
    < /td>
    2.0 (200%)

    Размеры файлов .ico (стандартные)

    Размеры файлов .ico (особые случаи)

    Аннотации и наложения

    • Аннотации располагаются в правом нижнем углу значка и должны занимать 25 процентов площади значка.
      • Исключение: для значков 16 x 16 используются аннотации 10 x 10.
      • Исключение: значки 16 x 16 накладываются друг на друга размером 10 x 10.

      Уровень детализации

      Размер многих из этих значков 16x16 по-прежнему широко используется и поэтому важен.

      Детали значка такого размера должны четко отображать ключевую часть значка.

      По мере того, как значок становится меньше, прозрачность и некоторые специальные детали, имеющиеся в больших размерах, должны быть принесены в жертву, чтобы упростить и донести суть.

      Атрибуты и цвета следует преувеличивать и использовать для подчеркивания ключевых форм.

      При разрешении 16 x 16 значок портативного аудиоустройства можно легко спутать с мобильным телефоном, поэтому наушник является ключевой визуальной деталью.

      Простое уменьшение размера с 256 x 256 не работает.

      Все размеры требуют соответствующего уровня детализации; чем меньше значок, тем больше вам нужно преувеличивать определяющие детали.

      Разработка иконки

      Дизайн и создание значков

      • Наймите опытного графического дизайнера. Для получения великолепной графики, изображений и значков обращайтесь к экспертам. Опыт работы с иллюстрациями с использованием векторной графики или 3D-программ рекомендуется.
      • Запланируйте серию итераций, от первоначальных концептуальных набросков до макетов в контексте, до окончательного обзора производства и подгонки значков в рабочем продукте.
      • Продумать заранее Создание значка может быть дорогостоящим. Соберите все существующие детали и требования, такие как: необходимый полный набор иконок; основная функция и значение для каждого; семейства или кластеры в наборе, который вы хотите выделить; требования к бренду; точные имена файлов; форматы изображений, используемые в вашем коде; и требования к размерам. Заранее позаботьтесь о том, чтобы максимально эффективно использовать время, проведенное с дизайнером.
      • Помните, что дизайнер может быть незнаком с вашим продуктом, поэтому предоставьте функциональную информацию, снимки экрана и разделы спецификаций, если это необходимо.
      • При необходимости запланируйте геополитические и юридические проверки.
      • Определите временные рамки и регулярно общайтесь с ними.

      От концептуального эскиза до конечного продукта

      • Создайте концептуальные наброски.
      • Попробуйте эту концепцию в разных размерах.
      • При необходимости визуализируйте в 3D.
      • Протестируйте размеры на разных цветах фона.
      • Оценивайте значки в контексте реального пользовательского интерфейса.
      • Создайте окончательный файл .ico или другие форматы графических ресурсов.

      Инструменты

      • Карандаш и бумага: первоначальные концептуальные идеи, перечисленные и набросанные.
      • 3D Studio Max: рендеринг 3D-объектов в перспективе.
      • Adobe Photoshop: делайте наброски и итерации, макеты в контексте и дорабатывайте детали.
      • Adobe Illustrator/ Macromedia Freehand: набросайте и повторите, доработайте детали.
      • Gamani Gif Movie Gear: создайте файл .ico (при необходимости со сжатием).
      • Axialis Icon Workshop: создайте файл .ico (при необходимости со сжатием).
      • Microsoft Visual Studio не поддерживает значки Windows Vista (нет поддержки альфа-канала или более 256 цветов).

      Производство

      Выполните следующие действия, чтобы создать один файл .ico, содержащий изображения разных размеров и глубины цвета.

      Шаг 1. Концептуализация

      • По возможности используйте устоявшиеся концепции, чтобы обеспечить согласованность значений значка и его актуальность для других целей.
      • Подумайте, как значок будет выглядеть в контексте пользовательского интерфейса и как он может работать в составе набора значков.
      • При изменении существующего значка подумайте, можно ли упростить его.
      • Учитывайте влияние вашей графики на культуру. Избегайте использования букв, слов, рук или лиц в значках. При необходимости изображайте людей или пользователей как можно более обобщенно.
      • При объединении нескольких объектов в одно изображение в значке учитывайте, как изображение будет масштабироваться до меньших размеров. Используйте не более трех объектов на иконке (предпочтительно два). Для размера 16 x 16 рассмотрите возможность удаления объектов или упрощения изображения, чтобы улучшить распознавание.
      • Не используйте флаг Windows в значках.

      Шаг 2. Проиллюстрируйте

      • Чтобы проиллюстрировать значки в стиле Windows Aero, используйте векторный инструмент, например Macromedia Freehand или Adobe Illustrator. Используйте характеристики палитры и стиля, описанные ранее в этой статье.
      • Проиллюстрируйте изображение с помощью Freehand или Illustrator. Скопируйте и вставьте векторные изображения в Adobe Photoshop.
      • Создайте и используйте слой-шаблон в Photoshop, чтобы убедиться, что работа выполняется в пределах квадратных областей регулируемых размеров.
      • Создавайте изображения размером немного меньше, чем требуется для общего размера значка, чтобы оставить место для тени (для тех размеров, где она требуется).
      • Поместите изображения в нижней части квадратов, чтобы все значки в каталоге располагались последовательно. Не обрезайте тени.
      • Если вы добавляете еще один объект к изображению или серии, оставьте основной объект в фиксированном положении и поместите плоские изображения меньшего размера в фиксированное положение, например, в нижний левый или верхний правый угол, в зависимости от случая. .

      Шаг 3. Создайте 24-битные изображения

      Шаг 5. Создайте файл .ico

      • Выберите приложение, которое лучше всего соответствует потребностям и навыкам художников. Помните, что значки, которые будут использоваться в готовом продукте, должны быть созданы в приобретенном или лицензированном инструменте. Это означает, что пробные версии использовать нельзя.
      • Оба перечисленных ниже продукта использовались дизайнерами, создававшими значки для Windows Vista, и каждый из них предлагает возможность экспорта в Adobe Photoshop CS.
        • Gamani Gif Movie Gear: создание файла .ico
        • Мастерская по иконкам Axialis: создание файла .ico

        Шаг 6. Оцените

        • Посмотрите на все размеры.
        • Посмотрите на семью вместе, чтобы оценить семейное сходство, оптический баланс и различия.
        • Просмотрите в контексте, чтобы оценить относительный вес и видимость (убедитесь, что один из них не доминирует).
        • Рассмотрите случаи, которые могут не использоваться сейчас, но могут быть использованы в ближайшем будущем. Может ли этот значок когда-либо быть аннотирован или иметь наложение?
        • Посмотрите в коде.

        Значки в контексте списков, панелей инструментов и древовидных представлений

        Список представлений

        В Windows Vista используйте миниатюры для файлов с содержимым, которое визуально отличается в мелком масштабе, чтобы пользователи могли сразу распознать файл, который они ищут. (Для этого используйте интерфейс программирования Windows Thumbnailing.)

        Наложения значков приложений (здесь не показаны) на эскизах помогают связать тип файла с приложением, а также показывают предварительный просмотр файла.

        Примечание. Для файлов без визуально различимого содержания не используйте эскизы. Вместо этого используйте традиционные символические значки файлов, показывающие представление объекта и связанное с ним приложение или тип.

        Предпосылки

        Создайте приложение

        В окне терминала создайте каталог с именем classes. Там вы создадите свое приложение. Перейдите в этот каталог и введите dotnet new console в окне консоли. Эта команда создает ваше приложение. Откройте Program.cs. Это должно выглядеть так:

        В этом руководстве вы создадите новые типы, представляющие банковский счет. Обычно разработчики определяют каждый класс в отдельном текстовом файле. Это упрощает управление по мере увеличения размера программы. Создайте новый файл с именем BankAccount.cs в каталоге Классы.

        Этот файл будет содержать определение банковского счета. Объектно-ориентированное программирование организует код, создавая типы в виде классов. Эти классы содержат код, представляющий определенный объект. Класс BankAccount представляет банковский счет. Код реализует определенные операции через методы и свойства. В этом руководстве банковский счет поддерживает следующее поведение:

        1. Он имеет 10-значный номер, который однозначно идентифицирует банковский счет.
        2. В нем есть строка, в которой хранится имя или имена владельцев.
        3. Баланс можно восстановить.
        4. Он принимает депозиты.
        5. Он принимает снятие средств.
        6. Первоначальный баланс должен быть положительным.
        7. Снятие средств не может привести к отрицательному балансу.

        Определить тип банковского счета

        Вы можете начать с создания основ класса, определяющего это поведение. Создайте новый файл с помощью команды File:New. Назовите его BankAccount.cs. Добавьте следующий код в файл BankAccount.cs:

        Прежде чем продолжить, давайте посмотрим, что вы создали. Объявление пространства имен предоставляет способ логической организации вашего кода. Это руководство относительно небольшое, поэтому вы поместите весь код в одно пространство имен.

        открытый класс BankAccount определяет класс или тип, который вы создаете. Все, что находится внутри < и > после объявления класса, определяет состояние и поведение класса. Класс BankAccount состоит из пяти членов. Первые три — это свойства. Свойства являются элементами данных и могут иметь код, обеспечивающий проверку или другие правила. Последние два — это методы. Методы — это блоки кода, выполняющие одну функцию. Чтение имен каждого члена должно предоставить вам или другому разработчику достаточно информации, чтобы понять, что делает класс.

        Откройте новый аккаунт

        Первой функцией, которую необходимо реализовать, является открытие банковского счета. Когда клиент открывает учетную запись, он должен предоставить начальный баланс и информацию о владельце или владельцах этой учетной записи.

        Создание нового объекта типа BankAccount означает определение конструктора, который присваивает эти значения. конструктор – это элемент с тем же именем, что и у класса. Он используется для инициализации объектов этого типа класса. Добавьте следующий конструктор к типу BankAccount. Поместите следующий код над объявлением MakeDeposit:

        Конструкторы вызываются при создании объекта с помощью new . Замените строку Console.WriteLine("Hello World!"); в Program.cs со следующим кодом (замените своим именем):

        Давайте запустим то, что вы уже создали. Если вы используете Visual Studio, выберите Запустить без отладки в меню Отладка. Если вы используете командную строку, введите dotnet run в каталоге, где вы создали свой проект.

        Вы заметили, что номер счета пуст? Пришло время это исправить. Учетный номер должен быть присвоен при построении объекта. Но вызывающая сторона не должна нести ответственность за его создание. Код класса BankAccount должен уметь назначать новые номера счетов. Простой способ сделать это — начать с 10-значного числа. Увеличивайте его при создании каждой новой учетной записи. Наконец, сохраните текущий номер счета при создании объекта.

        Добавьте объявление члена в класс BankAccount. Поместите следующую строку кода после открывающей скобки < в начале класса BankAccount:

        Это член данных. Это private , что означает, что к нему можно получить доступ только с помощью кода внутри класса BankAccount. Это способ отделить общие обязанности (например, иметь номер счета) от частной реализации (как генерируются номера счетов). Он также является статическим, что означает, что он используется всеми объектами BankAccount. Значение нестатической переменной уникально для каждого экземпляра объекта BankAccount. Добавьте следующие две строки в конструктор, чтобы назначить номер счета. Поместите их после строки, которая говорит this.Balance = initialBalance :

        Введите dotnet run, чтобы увидеть результаты.

        Создание депозитов и выводов

        Ваш класс банковского счета должен принимать депозиты и снятие средств, чтобы работать правильно. Давайте реализуем ввод и вывод средств, создав журнал каждой транзакции для учетной записи. Это имеет несколько преимуществ по сравнению с простым обновлением баланса при каждой транзакции. Историю можно использовать для аудита всех транзакций и управления ежедневными остатками. Путем вычисления баланса из истории всех транзакций, когда это необходимо, любые ошибки в одной транзакции, которые были исправлены, будут правильно отражены в балансе при следующем вычислении.

        Давайте начнем с создания нового типа для представления транзакции. Это простой тип, который не имеет никаких обязанностей. Ему нужно несколько свойств. Создайте новый файл с именем Transaction.cs. Добавьте в него следующий код:

        Теперь добавим список объектов Transaction в класс BankAccount. Добавьте следующее объявление после конструктора в файле BankAccount.cs:

        Теперь давайте правильно посчитаем Balance . Текущий баланс можно найти, просуммировав значения всех транзакций. Поскольку в настоящее время используется код, вы можете получить только начальный баланс учетной записи, поэтому вам придется обновить свойство Balance. Замените строку public decimal Balance < get; >в BankAccount.cs со следующим кодом:

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

        Затем реализуйте методы MakeDeposit и MakeWithdrawal. Эти методы будут обеспечивать соблюдение последних двух правил: начальный баланс должен быть положительным, а любое снятие средств не должно создавать отрицательного баланса.

        Это вводит понятие исключений. Стандартный способ указать, что метод не может успешно завершить свою работу, — выдать исключение. Тип исключения и связанное с ним сообщение описывают ошибку. Здесь метод MakeDeposit создает исключение, если сумма депозита не превышает 0. Метод MakeWithdrawal создает исключение, если сумма вывода не превышает 0 или если применение вывода приводит к отрицательному балансу. Добавьте следующий код после объявления списка allTransactions:

        Инструкция throw создает исключение. Выполнение текущего блока завершается, и управление переходит к первому подходящему блоку catch, найденному в стеке вызовов. Чуть позже вы добавите блок catch для проверки этого кода.

        Конструктор должен получить одно изменение, чтобы добавить начальную транзакцию, а не напрямую обновлять баланс. Поскольку вы уже написали метод MakeDeposit, вызовите его из конструктора. Готовый конструктор должен выглядеть так:

        DateTime.Now — это свойство, которое возвращает текущую дату и время. Проверьте это, добавив несколько депозитов и снятий в свой метод Main, следуя коду, который создает новый BankAccount :

        Затем проверьте, перехватываете ли вы условия ошибки, попытавшись создать учетную запись с отрицательным балансом. Добавьте следующий код после только что добавленного предыдущего кода:

        Вы используете операторы try и catch, чтобы пометить блок кода, который может генерировать исключения, и перехватить ожидаемые ошибки. Вы можете использовать ту же технику для тестирования кода, который создает исключение для отрицательного баланса. Добавьте следующий код в конец метода Main:

        Сохраните файл и введите dotnet run, чтобы попробовать его.

        Вызов - записывать все транзакции

        Чтобы закончить это руководство, вы можете написать метод GetAccountHistory, который создает строку для истории транзакций. Добавьте этот метод к типу BankAccount:

        При этом используется класс StringBuilder для форматирования строки, содержащей по одной строке для каждой транзакции. Вы видели код форматирования строк ранее в этих руководствах. Один новый символ \t . Это вставляет вкладку для форматирования вывода.

        Добавьте эту строку для проверки в Program.cs:

        Запустите программу, чтобы увидеть результаты.

        Дальнейшие шаги

        Если вы застряли, вы можете посмотреть исходный код этого руководства в нашем репозитории GitHub.

        Описывает, как использовать свойства объекта в PowerShell.

        Подробное описание

        Связь между элементом и его объектом очень тесная. Когда вы меняете объект, вы обычно меняете элемент, который он представляет. Например, когда вы получаете файл в PowerShell, вы не получаете реальный файл. Вместо этого вы получаете объект FileInfo, представляющий файл. При изменении объекта FileInfo файл также изменяется.

        Большинство объектов имеют свойства. Свойства — это данные, связанные с объектом. Разные типы объектов имеют разные свойства. Например, объект FileInfo, представляющий файл, имеет свойство IsReadOnly, которое содержит $True, если файл имеет атрибут только для чтения, и $False, если это не так. Объект DirectoryInfo, представляющий каталог файловой системы, имеет свойство Parent, содержащее путь к родительскому каталогу.

        Свойства объекта

        Чтобы получить свойства объекта, используйте командлет Get-Member. Например, чтобы получить свойства объекта FileInfo, используйте командлет Get-ChildItem, чтобы получить объект FileInfo, представляющий файл. Затем с помощью оператора конвейера (|) отправьте объект FileInfo в Get-Member . Следующая команда получает файл PowerShell.exe и отправляет его Get-Member . Автоматическая переменная $Pshome содержит путь к каталогу установки PowerShell.

        В выходных данных команды перечислены члены объекта FileInfo. Члены включают как свойства, так и методы.Когда вы работаете в PowerShell, у вас есть доступ ко всем членам объектов.

        Чтобы получить только свойства объекта, а не методы, используйте параметр MemberType командлета Get-Member со значением "property", как показано в следующем примере.

        После того, как вы найдете свойства, вы можете использовать их в своих командах PowerShell.

        Значения свойства

        Хотя каждый объект определенного типа имеет одинаковые свойства, значения этих свойств описывают конкретный объект. Например, каждый объект FileInfo имеет свойство CreationTime, но значение этого свойства различается для каждого файла.

        Самый распространенный способ получить значения свойств объекта — использовать точечный метод. Введите ссылку на объект, например переменную, содержащую объект, или команду, которая получает объект. Затем введите точку (.) и имя свойства.

        Например, следующая команда отображает значение свойства CreationTime файла PowerShell.exe. Команда Get-ChildItem возвращает объект FileInfo, представляющий файл PowerShell.exe. Команда заключена в круглые скобки, чтобы убедиться, что она выполняется до доступа к каким-либо свойствам. За командой Get-ChildItem следует точка и имя свойства CreationTime следующим образом:

        Вы также можете сохранить объект в переменной, а затем получить его свойства с помощью метода точки, как показано в следующем примере:

        Вы также можете использовать командлеты Select-Object и Format-List для отображения значений свойств объекта. Select-Object и Format-List имеют параметр Property. Вы можете использовать параметр Property для указания одного или нескольких свойств и их значений. Или вы можете использовать подстановочный знак (*) для представления всех свойств.

        Например, следующая команда отображает значения всех свойств файла PowerShell.exe.

        Статические свойства

        Чтобы получить статические свойства класса, используйте параметр Static командлета Get-Member.

        Например, следующая команда получает статические свойства класса System.DateTime.

        Чтобы получить значение статического свойства, используйте следующий синтаксис.

        Например, следующая команда получает значение статического свойства UtcNow класса System.DateTime.

        Перечисление доступа к членам

        Начиная с PowerShell 3.0, когда вы используете оператор доступа к членам ( . ) для доступа к свойству, которого нет в коллекции списков, PowerShell автоматически перечисляет элементы в коллекции и возвращает значение свойства для каждого элемента. . Дополнительные сведения см. в разделе about_Member-Access_Enumeration.

        Примеры

        Эта команда возвращает значение свойства DisplayName каждой службы, которую возвращает Get-Service.

        Все коллекции имеют свойство Count, которое возвращает количество объектов в коллекции.

        Начиная с PowerShell 3.0, если вы запрашиваете свойство Count или Length ни одного объекта или одного объекта, PowerShell возвращает правильное значение.

        Если свойство существует для отдельных объектов и для коллекции, возвращается только свойство коллекции.

        Читайте также: