вторник, 31 августа 2010 г.

Создание Аттрибута для хранения информации о разработчике

В этой статье мы создадим Аттрибут для хранения информации о девелопере измнившем код подследним. Обязательными являются его (фамилия)ник типа string и дата модификации кода. Опциональными - комментарий типа string .

Коллекция Attribute связывает предопределенную системную информацию или заданную пользователем информацию с целевым элементом. Целевым элементом может быть: сборка, класс, конструктор, делегат, перечисление, событие, поле, интерфейс, метод, переносимый исполняемый (PE) файл, модуль, параметр, свойство, возвращаемое значение, структура или другой атрибут.

Информация, предоставляемая атрибутом, называется также метаданными. Метаданные можно анализировать в приложении во время выполнения, для того чтобы управлять тем, как это приложение осуществляет обработку данных, или до времени выполнения внешними средствами для управления обработкой и выполнением самого приложения. Например, на платформе .NET Framework предопределены и используются типы атрибутов для управления поведением времени выполнения, и некоторые языки программирования используют типы атрибутов для представления языковых функций, не поддерживаемых непосредственно общей системой типов .NET Framework.

Все типы атрибутов прямо или косвенно наследуются от класса Attribute. Атрибуты могут быть применены к любому целевому элементу; несколько экземпляров атрибута могут быть применены к одному и тому же целевому элементу; атрибуты могут наследоваться элементом, являющимся производным от целевого элемента. Используйте класс AttributeTargets для задания целевого элемента, к которому применяется атрибут.

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

Давай те обратимся к реализации.

using System;

using System.Collections.Generic;

using System.Text;

namespace Task_2

{

public sealed class DeveloperAttribute : System.Attribute

{

private string lastName;

public string LastName

{

get { return lastName; }

set { lastName = value; }

}

private DateTime date;

public DateTime Date

{

get { return date; }

set { date = value; }

}

private string comment;

public string Comment

{

get { return comment; }

set { comment = value; }

}

public DeveloperAttribute(string lastName, string date)

{

this.lastName = lastName;

this.date = Convert.ToDateTime(date);

}

public DeveloperAttribute(string lastName, string date, string comment)

{

this.lastName = lastName;

this.date = Convert.ToDateTime(date);

this.comment = comment;

}

public override string ToString()

{

return lastName + date.ToString();

}

}

}

А теперь используем наш описанный выше класс атрибута в коде. Например, в классе из написанной мной ранне статьи “Модификация приложения JobTerrarium ”.

using System;

using System.Collections.Generic;

using System.Text;

using Task_2Winforms;

namespace Task_2

{

[Developer("Vasya Ivanov", "23.11.07")]

class BigBoss : Boss,IManagable

{

public BigBoss(string name):base(name,1500)

{

}

public BigBoss(string name, decimal salary):base(name,salary)

{

}

public override string SayToWorker()

{

return "Сколько можно бездельничать?";

}

public override string SayToBoss()

{

return "Как работа?";

}

public override string SayToBigBoss()

{

return "Здравствуй.";

}

public override string ToString()

{

return "BigBoss";

}

void RaiseSalary(decimal amount)

{

TextBuffer.WriteLine("Нельзя управлять мной!!!");

}

}

}

Таким образом, мы видим, что использование класса System.Attribute очень полезно и удобно.

Комментариев нет:

Отправить комментарий