АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция

Абстрактный базовый класс FileSystemInfo

Читайте также:
  1. I Тип Простейшие. Характеристика. Классификация.
  2. I. Психологическое сопровождение первоклассников
  3. II. Классификация медицинских отходов
  4. II. Классификация таза по форме сужения.
  5. II. Клинико-психологические классификации.
  6. III. Условия прохождения дистанции I класса.
  7. IV. Схема анализа внеклассного мероприятия
  8. O Классицизм
  9. Oriental классика, Oriental шоу, Oriental фолк
  10. SAE - классы вязкости моторных масел
  11. SEO-базовый - 10 занятий
  12. V. Классификация предметов

Классы DirectoryInfo и FileInfo получают много методов от абстрактного класса FileSystemInfo. Элементы класса FileSystemInfo в основном используются для получения общих характеристик (таких, как время создания, различные атрибуты и т.д.) о конкретном файле или папке.

Таблица 9.1.

Свойства класса FileSystemInfo Свойство Описание
Attributes получение или задание атрибутов, связанных с текущим файлом или папкой, которые представляются в виде перечисления FileAttributes;
CreationTime получение или задание времени создания текущего файла или папки;
Exists может использоваться для определения того, существует ли заданный файл или папка;
Extension получение расширения файла;
FullName получение полного пути папки или файла;
LastAccessTime получение или задание времени, когда текущая папка или файл в последний раз использовались;
LastWriteTime получение или задание времени, когда в текущую папку или файл в последний раз выполнялась запись;
Name получение имени текущей папки или файла.

 

№5 Класс Encoding.

Пример:

using System;

using System.Text;

 

class Example

{

static void Main()

{

string unicodeString = "This string contains the unicode character Pi (\u03a0)";

Encoding ascii = Encoding.ASCII;

Encoding unicode = Encoding.Unicode;

byte[] unicodeBytes = unicode.GetBytes(unicodeString);

byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);

char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];

ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);

string asciiString = new string(asciiChars);

Console.WriteLine("Original string: {0}", unicodeString);

Console.WriteLine("Ascii converted string: {0}", asciiString);

}

}

Представляет собой кодировку символов. Пространство имен: System.Text

Конструкторы:

Encoding() - Инициализирует новый экземпляр класса Encoding.

Encoding(Int32) - Инициализирует новый экземпляр класса Encoding, соответствующий заданной кодовой странице.

Синтаксис: [SerializableAttribute]

[ComVisibleAttribute(true)]

public abstract class Encoding: ICloneable

 

№6 Файлы и потоки. Основные методы для работы с файлами (System.IO.FileStream, System.IO.StreamWriter, System.IO.StreamReader, System.IO.BinaryWriter, System.IO.BinaryReader)

Для того, чтобы не только получать информацию о файлах и вы-полнять с ним разные операции (например, создание, копирование, пе-ремещение и удаление), а также читать или записывать данные в файлы, используется понятие «поток» (stream).

В области ввода/вывода данных, поток представляется виде пор-ции данных передаваемых между источником и получателем. Потоки предоставляют общий способ взаимодействия с последовательностью байт, независимо от того, какой тип устройства (файл, сетевое соедине-ние, принтер и т.п.) хранит или отображает эти байты. Абстрактный класс System.IO.Stream определяет набор элементов, предоставляю-щих поддержку разных типов взаимодействия с устройствами хранения данных (например, некоторый файл или участок памяти).

Классы, производные от абстрактного базового класса Stream (рис. 9.1) представляют данные в виде необработанного потока байт, поэтому работа напрямую с ними достаточно трудоемка. Некоторые классы производные от Stream поддерживают поиск, т.е. выполняют определение и изменение текущей позиции в потоке. Основные элемен-ты класса Stream, показаны в табл. 9.6.

CanRead, CanWrite определение, поддерживает ли текущий поток операции по чтению или записи;
Close() закрытие текущего потока и освобождение всех выделенных ресурсов (таких, как сокеты и дескрипторы файлов) связанные с текущим потоком;
Flush() обновление источника данных или хранилища с помощью текущего состояния буфера и затем очистка буфера;
Length определение размера потока в байтах;
Position определение текущей позиции в потоке;
Read(), ReadByte() чтение последовательности байт из потока, начиная с текущей позиции и перемещение текущей позиции в потоке на количество прочитанных байтов;
Seek() задание текущей позиции в потоке;
SetLength() задание размера потока;
Write(), WriteByte()   запись последовательности байт в поток и перемещение текущей позиции в потоке на количество записанных байтов

Для работы с файлами на основе абстрактного класса Stream реа-лизован класс FileStream, который определяет методы наиболее под-ходящие для работы с файлами. Это достаточно простой поток, который может только читать и писать один или массив байт. При составлении программ этот класс используется редко, чаще используются различные потоки, основанные на классе FileStream, такие как StreamWriter и StreamReader для работы с текстовыми данными, а также Binary-Writer и BinaryReader для работы с бинарными данными.

 

 

№7 Сериализация и десериализация объектов классов (BinaryFormatter)

BinaryFormatter: Сериализует и десериализует объект или весь граф связанных объектов в двоичном формате. Пространство имен: System.Runtime.Serialization.Formatters.Binary Синтаксис: [ComVisibleAttribute(true)]

public sealed class BinaryFormatter:IRemotingFormatter,IFormatter

Конструкторы:

BinaryFormatter() - Инициализирует новый экземпляр класса BinaryFormatter значениями по умолчанию.

BinaryFormatter(ISurrogateSelector, StreamingContext) - Инициализирует новый экземпляр класса BinaryFormatter с заданными суррогатным селектором и потоковым контекстом.

Методы:

Deserialize(Stream) Десериализует заданный поток в граф объекта.

Deserialize(Stream, HeaderHandler) Десериализует заданный поток в граф объекта.Предоставленный HeaderHandler обрабатывает любые заголовки в этом потоке.

DeserializeMethodResponse Десериализует ответ удаленному вызову метода от предоставленного Stream.

Equals(Object) Определяет, равен ли заданный объект текущему объекту. (Унаследовано от Object.)

GetHashCode Играет роль хэш-функции для определенного типа. (Унаследовано от Object.)

GetType Возвращает объект Type для текущего экземпляра. (Унаследовано от Object.)

Serialize(Stream, Object) Сериализует объект или граф объектов с указанной вершиной (корнем) в заданный поток.

Serialize(Stream, Object, Header[])Сериализует объект или граф объектов с указанной вершиной (корнем) в заданный поток, присоединяя предоставленные заголовки.

ToString Возвращает строку, которая представляет текущий объект. (Унаследовано от Object.)

UnsafeDeserialize Десериализует заданный поток в граф объекта.Предоставленный HeaderHandler обрабатывает любые заголовки в этом потоке.

UnsafeDeserializeMethodResponse Десериализует ответ удаленному вызову метода от предоставленного Stream.

№8 Язык интегрированных запросов LINQ (операции ограничения, проекции, разбиения, конкатенации, упорядочивания, соединения, группировки, множества, преобразования и генерации).

Language Integrated Query (LINQ) — проектMicrosoft по добавлению синтаксиса языка запросов, напоминающего SQL, в языки программирования платформы.NET Framework. Представляет собой не что иное, какфункциональное программирование, замаскированное под синтаксис SQL[1].

Особенности языка

Используя некоторые новые особенности языка, LINQ позволяет использовать SQL-подобный синтаксис непосредственно в коде программы, написанной, например, на языке C#:Анонимные типы Методы расширения Лямбда-исчисление Дерево выражений Стандартные операторы языка запросов

Источники данных. Изначально поддерживая механизм запросов для коллекций объектов в памяти, реляционных баз данных и данных в формате XML, LINQ обладает расширяемой архитектурой, которая позволяет сторонним разработчикам реализовать доступ к их хранилищам данных через механизм LINQ. Для этого необходимо реализовать стандартные операторы запросов, используя методы расширения, или реализовать интерфейс IQueryable, позволяющий разбирать дерево выражения во время выполнения, транслируя его в свой язык запросов. В сообществе существует пример пользовательской реализации стандартных операторов запросов.[2]

Например, LINQ для SQL (бывший DLinq), который преобразует LINQ-выражения в SQL-запросы к базе данных, использует возможности компилятора для построения дерева выражений, основываясь на контексте программы, а не создавая делегаты функций. Получив дерево выражения, описывающее запрос, специализированный провайдер базы данных может его проанализировать и преобразовать в запрос на подходящем языке для базы данных, например Microsoft SQL Server, Jet (которая используется в Microsoft Access) или любой другой. Некоторые энтузиасты при помощи подобной тактики уже создали для проверки концепции LINQ библиотеки для запросов к WMI[3], RSS, LDAP[4], коллекциям данных ADO.NET, Amazon Web Services[5] и SharePoint[6].

Существующая предварительная версия от Microsoft также включает в себя реализацию LINQ для XML (ранее называвшуюся XLinq), которая значительно упрощает построение XML документа и извлечение данных из него, используя похожие подходы. Кроме того, Microsoft работает над ADO.NET vNext, также известным как LINQ to Entities.

LINQ к SQL В конце 2008 года ответственность за разработку LINQ к SQL наряду с ADO.NET Entity Framework (в том числе и LINQ к Entities) была переложена на команду, занимавшуюся развитием ADO.NET (т. н. ADO.NET team), тогда как ранее развитием LINQ к SQL занималась команда, связанная с разработкой компилятора для языка C#[7]. Таким образом, стало очевидно, что оба решения нацелены на решение одних и тех же задач, а следовательно будут конкурировать друг с другом. Немного позднее Тим Маллалью разъяснил, что Microsoft продолжит разработку LINQ к SQL на основе пользовательских отзывов. Однако, начиная с версии платформы.NET 4.0, рекомендованным решением становится именно LINQ к Entities. Кроме того, на основании информации, полученной от пользователей, наиболее употребляемые возможности LINQ к SQL будут добавлены и в LINQ к Entities[8]. В результате чего произойдет постепенное слияние решений.

 

Эксперты в основном поддержали данное решение. Так, например, Марко Руссо хотя и оговорился, что переходить к LINQ к Entities стоит не раньше, чем оно превратится в полноценную замену LINQ к SQL, тем не менее заявил, что объединение двух частично перекрывающих друг друга фреймворков — хорошая идея, но при этом не должны пострадать те пользователи, которые привыкли пользоваться «отбрасываемыми» частями решений[7]

 

SQLMetal. Библиотека LINQ включает в себя инструмент SQLMetal, который позволяет автоматически генерировать классы непосредственно из поддерживаемых.NET Framework баз данных, что дает возможность очень быстро и просто интегрировать в код сущности базы данных. Альтернативой является входящий в состав Visual Studio реляционный конструктор объектов, однако он может быть использован только вместе с Microsoft SQL Server.

// тип Northwind — это наследник DataContext, созданный SQLMetal

// тип Northwind.Orders — Table<Order>

// тип Northwind.Customers — Table<Customer>

 

Northwind db = new Northwind(connectionString);

 

// используется ключевое слово 'var', так как не существует имени у типа,

// к которому принадлежит результат запроса

 

var q = from o in db.Orders from c in db.Customers

where o.Quality == "200" && (o.CustomerID == c.CustomerID)

select new { o.DueDate, c.CompanyName, c.ItemID, c.ItemName };

// q ссылается на объект типа IEnumerable<T>, где T — анонимный тип,

// генерируемый компилятором

foreach (var t in q)

{

// t является строго типизированным, хоть у его типа и отсутствует имя,

// известное при написании кода

Console.WriteLine("DueDate Type = {0}", t.DueDate.GetType());

Console.WriteLine("CompanyName (lowercased) = {0}", t.CompanyName.ToLower());

Console.WriteLine("ItemID * 2 = {0}", t.ItemID * 2);


1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |

Поиск по сайту:



Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.008 сек.)