Система Работы С Атрибутами

В этой статье мы поговорим об унификации работы с атрибутами в проектах, написанных на C#.

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

Все примеры и реализации являются предварительными и предназначены для представления подходов или идей.



Введение

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

В каждом конкретном случае разработчик выбирает удобный для него вариант обработки.

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

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

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



Типичные примеры



Связывание

Предположим, у нас есть некоторое описание пользовательского интерфейса (UI, Form) во внешнем источнике.

Есть базовый класс Form, позволяющий загрузить описание и создать все необходимые элементы управления (виджеты, элементы управления, виджеты).

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

Когда вы вызываете метод Initialise класса Form, созданные виджеты привязываются к полям класса-потомка.

Источник Описание класса виджета:

  
   

using System; public class Widget { }

Описание класса атрибута:

using System; [AttributeUsage(AttributeTargets.Field, AllowMultiple = false)] public class WidgetNameAttribute : Attribute {

Теги: #C++ #дизайн #рефакторинг #программирование #проектирование и рефакторинг #C++
Вместе с данным постом часто просматривают: