СNet Attribute

Содержание

Слайд 2

Атрибуты

Компилятор создает атрибуты, когда вы объявляете экземпляры специальных классов, наследующих от System.Attribute

1.

Атрибуты Компилятор создает атрибуты, когда вы объявляете экземпляры специальных классов, наследующих от
Описания правил сериализации данных

2. Управления безопасностью на уровне сборки

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

Атрибуты используются для:

3. Облегчения отладки кода

4. Управления поведением компонент

5. Управления видимостью элементов управления и классов при разработке форм пользовательского интерфейса

6. Комментирования кода

7. …

Слайд 3

Применение атрибутов

1. Определяется новый или используется существующий в .Net Framework атрибут

2. Инициализируется

Применение атрибутов 1. Определяется новый или используется существующий в .Net Framework атрибут
конкретный экземпляр атрибута с помощью вызова конструктора атрибута

3. Атрибут помещается в метаданные при компиляции и становится доступен CLR

4. По соглашению имена всех атрибутов оканчиваются словом Attribute.
System.ObsoleteAttribute

Большинство атрибутов применяется к классам, методам, полям и свойствам

Глобальные атрибуты – воздействуют на всю сборку или модуль

Применение атрибутов на уровне классов и методов:

Слайд 4

Применение атрибутов

 Атрибут System.ObsoleteAttribute, помечающий код как устаревший. заставляет компилятор выдать переданную строку как

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

using System;
public class MainApp
{
public static void Main()
{ //На этой строке компилятор выдаст предупреждение.
int MyInt = Add(2,2);
}
//Этот атрибут применяется только к методу Add. [Obsolete("В следующей версии метод будет удален")]
public static int Add(int a, int b)
{ return (a + b); }
}

На уровне метода

Слайд 5

Применение атрибутов

При компиляции кода строка "Моя сборка" помещается в манифест сборки в

Применение атрибутов При компиляции кода строка "Моя сборка" помещается в манифест сборки
секции метаданных. Этот атрибут можно увидеть с помощью дизассемблера MSIL (Ildasm.exe) или с помощью пользовательских средств.

using System.Reflection;
[assembly:AssemblyName("Моя сборка")]

На уровне сборок

Для применения атрибута на уровне модуля используется ключевое слово Module.

Слайд 6

Пользовательские атрибуты

Пользовательские атрибуты – классы, наследующие от System.Attribute

[AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple

Пользовательские атрибуты Пользовательские атрибуты – классы, наследующие от System.Attribute [AttributeUsage(AttributeTargets.All, Inherited =
= true)]

Объявление начинается с AttributeUsageAttribute

Атрибут может применяться ко всем элементам программы

Атрибут не будет наследоваться классами наследниками

Атрибут может применяться к одному элементу многократно

Слайд 7

Пользовательские атрибуты

// По умолчанию Inherited = true.
public class MyAttribute : Attribute

Пользовательские атрибуты // По умолчанию Inherited = true. public class MyAttribute :
{ }
// Явно задается false.
[AttributeUsage(Inherited = false)]
public class YourAttribute : Attribute { }

public class MyClass
{
[MyAttribute][YourAttribute]
public void MyMethod() { //... }
}

Слайд 8

Пользовательские атрибуты

public class MyClass
{ // Ошибка - дублирование не разрешено.

Пользовательские атрибуты public class MyClass { // Ошибка - дублирование не разрешено.
[MyAttribute, MyAttribute]
public void MyMethod() { //... }
// Это допустимо.
[YourAttribute, YourAttribute]
public void YourMethod() { //... }
}

Слайд 9

Типы данных, допустимые в атрибутах

Bool
Byte
Char
Double
Float
Int
Long
Short
String
Object
System.Type
Открытые перечислимые типы, вложенные (если вложены) в открытые

Типы данных, допустимые в атрибутах Bool Byte Char Double Float Int Long
типы
Имя файла: СNet-Attribute.pptx
Количество просмотров: 148
Количество скачиваний: 0