Главная · Карта сайта · Поиск · Статьи · Компьютерные курсы · Обучающие программы · Открытые проекты · Веб-программирование · Создание интернет-сайта · Полезные ссылки · Глоссарий · Контакты · Декабрь 09 2016 20:18:52
Последнее опубликованное

Что такое Model-View-Controller
Pattern Model-View-Controller

Как создать свой веб-сайт
Как создать свой сайт в интернете

Разное
Статистика

Программирование на C#. Анонимные типы и динамическое связывание


Перейти к обзору всех тем

Объявление анонимных типов и динамическое связывание

Начну с динамических типов, которые позволяют работать с типами в языке C# с использованием связывания на этапе выполнения программы. Под связыванием понимается процесс соотнесения обозначения переменной в коде программы с самой этой переменной в оперативной памяти, в ходе чего однозначно определяется ее тип. Объявляются динамические типы, что логично, с использованием ключевого слова dynamic. Объяснять словами практическое применение динамического связывания не буду, а сразу перейду к примеру:

using System;
using System.Windows.Forms;
namespace CSharpQuickGuide
{
    public class TObject3
    {
        public string Name { get; set; }
        public string Caption { get; set; }
        public double Square { get; set; }
    }

    public static class DLRSample
    {
        public static void Main()
        {
            //Объявление переменных анонимного типа
            var object1 = new { Name = "object1", Caption = "Объект анонимного типа 1", Size = 42.2 };
            var object2 = new { Name = "object2", Caption = "Объект анонимного типа 2", Length = 17.4 };
            //Объявление переменной типа TObject3
            TObject3 object3 = new TObject3() { Name = "object3", Caption = "Объект типа TObject3", Square = 84.7 };

            string _report = string.Empty;
            _report = _report + ObjectToString(object1);
            _report = _report + ObjectToString(object2);
            _report = _report + ObjectToString(object3);

            MessageBox.Show(_report, "Информация об объектах");  
        }
        //Параметров функции ObjectToString является динамический тип
        //Связывание с конкретным типом аргумента происходит в момент вызовы
        private static string ObjectToString(dynamic obj)
        {
            return "Name = " + obj.Name + "; Caption = " + obj.Caption + "; Type = "
                + obj.GetType().Name + Environment.NewLine;  
        }
    }
}

В примере также используется объявление анонимных типов, которое может быть полезно в тех случаях, когда описание типа и создание его экземпляров локализовано в отдельном методе, и нет абсолютно никакого смысла выносить определение класса за пределы этого метода и придумывать ему имя. Анонимный тип объявляется с использованием ключевого слова var. Далее видно, что объекты object1, object2 и object3 ничего между собой не связывает: ни общий интерфейс, ни базовый класс. Все они просто имеют два одинаковых свойства (свойства разных классов имеют одинаковую сигнатуру и наименование). Именно это обстоятельство позволяет нам применить единый метод к их обработке с использованием динамического связывания, что и показано на примере метода ObjectToString(). Результат работы примера далее.

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

Динамическое связывание очень может пригодиться, когда вы имеете дело с типами, реализованными сторонним производителем программного обеспечения. Даже более того: эти типы могут быть от разных производителей, но их всех что-то объединяет. За обработку динамических типов отвечает среда DLR (Dynamic Language Runtime), которая для реализации связывания использует технологию отражения (reflection), более подробно которая рассматривается здесь.



Компьютерные курсы и курсы программирования
Основы программирования

Курс для начинающих программистов на C# и VB.NET.

SQL 25™

Построение SQL запросов и работа с базой данных.

C# Quick Guide™

Программирование на C#. Краткое руководство.

RegEx

Применение регулярных выражений.

Plug-in архитектура

Примеры программной Plug-in архитектуры.

XML и его расширения

Язык разметки XML и его расширения с примерами.

HTML и разметка гипертекста

Языки HTML, XHTML и CSS с примерами разметки.

Основы веб-дизайна

Основы веб-дизайна: решения типовых задач верстки.

Программирование на PHP

Руководство по программированию на PHP для начинающих.

Справочные материалы

Шаблоны проектирования
Каталог шаблонов проектирования программных компонентов.

Рефакторинг кода
Каталог приемов рефакторинга программного кода.

Гость
Имя

Пароль



Забыли пароль?
Запросите новый здесь
.
Coding Craft. Все права защищены © 2011. Проект Инициативного Народного Фронта Образования - ИНФО-проект.