Записи с меткой «c#»

Работаем с архивом zip (.net, c#)

Распакуем архив в папку string srcZipFile = «d:/Temp/Test.zip»; string dstDirectory = «d:/Temp/Test»; if (Directory.Exists(dstDirectory)) Directory.Delete(dstDirectory); ZipFile.ExtractToDirectory(srcZipFile, dstDirectory); Запакуем обратно в архив if (Directory.Exists(srcZipFile)) Directory.Delete(srcZipFile); ZipFile.CreateFromDirectory(dstDirectory, srcZipFile); Создадим архив в памяти string[] files = new string[] {«d:/Temp/Test1.txt», «d:/Temp/Test2.txt»}; using (var memoryStream = new MemoryStream()) { using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true)) { foreach(string file …

Работа со сборками .net

В данной заметке опишу как описывать зависимости сборок в web.config, как добавлять сборки в gac, как смотреть список зависимых сборок с помощью утилиты ildasm, как создавать и смотреть открытый ключ в vs и др. В Web.config зависимости сборок описываются в элементе assemblyBinding <configuration> <runtime> <assemblyBinding xmlns=»urn:schemas-microsoft-com:asm.v1″> </assemblyBinding> </runtime> </configuration> Для того чтобы наше приложению загружала только самую …

Работа с регулярными выражениями, строками и числами c#

В данной заметке опишу некоторую работу с регулярными выражениями, строками и числами. В дальнейшем данная заметка будет постоянно дополняться. Экранирование слэшей и кавычек. В c# обратные слэши можно экранировать посредством символа @ в определении строки string emailPattern = @»\w+[-.\w]+@\w+[-.\w]+\.\w+[-.\w]+»; // вместо emailPattern = «\\w+[-.\\w]+@\\w+[-.\\w]+\\.\\w+[-.\\w]+»; Кавычки в c# экранируются путем дублирования этой самой кавычки если строка предваряется …

Работа с перечислениями в c#

В данной заметке опишу как создавать перечисления, как парсить, как сравнивать и тп. Создаем перечисление public enum Colors { Red, Green, Blue } Сравниваем перечисления Colors red = Colors.Red; if (red.Equals(Colors.Red)) Console.WriteLine(«Yes»); else Console.WriteLine(«No»); // Вывод: Yes Делаем обход перечислений foreach(Colors c in Enum.GetValues(typeof(Colors)) Console.WriteLine(c); //Вывод: Red Green Blue Конвертируем — в строку, в число …

Работа с логированием в asp.net

Посмотрим логи которые пишет iis сервер по умолчанию. Установим elmah и nlog логирования. Первый удобен тем что имеет веб интерфейс. Второй позволяет писать логи в текстовый файл, что удобно когда нужно исследовать участок кода более подробно. Логи по умолчанию расположены в c:\inetpub\logs\LogFiles\W3SVC{Id}. Id — это идишник сайта, его можно посмотреть в iis manager. Чтобы установить elmah …

Работа с картинками (.net, c#)

Загружаем картинку на сервер [HttpPost] public void UploadImage(HttpPostedFileBase file) { if (file == null) throw new Exception(«Не указан файл.»); if (!new string[] { «image/jpeg», «image/pjpeg», «image/png», «image/gif», «image/bmp» } .Any(x => x == file.ContentType.ToLower())) throw new Exception(«Файл не является изображением.»); System.Drawing.Image image = System.Drawing.Image.FromStream(file.InputStream); image.Save(«d:/Temp/Image.jpg», System.Drawing.Imaging.ImageFormat.Jpeg); } Сжимаем картинки public void ResizeImage(int size, string filePath, …

Работа с файлами и директориями c#

Для работы с файлами и директориями в c# есть такие классы — System.IO.Path, System.IO.File, System.IO.Directory. Приведу примеры использования некоторых методов этих классов, на мой взгляд самых необходимых. Получим директории расположения файла string path = @»c:\\site\path-to-files\file.txt»; string dirName = Path.GetDirectoryName(path); // dirName: c:\\path-to-files Метод Path.GetDirectoryName() вернет такое же значение если передать такие пути c:\\site\path-to-files\ или c:\\site\path-to-files Получим имя файла string fileName = …

Работа с automapper

Установим autommapper и научимся создавать пользовательский automapper. Установим automapper при помощи nuget. Создаем класс AutoMapperDefaultProfile, который будет описывать все наши преобразования объектов. public class AutoMapperDefaultProfile : Profile { protected override void Configure() { //CreateMap<ValueSimpleForm, ProductsValue>() // .ForMember(dest => dest.Value_long, opt => opt.MapFrom(src => Utils.ToLong(src.Value_double))); } } Зарегистрируем этот профиль в Global.asax Mapper.Initialize(x => x.AddProfile<AutoMapperDefaultProfile>()); Чтобы конвертировать Filter …

Привязывание к модели списка значений, разделенных запятыми (asp.net-mvc)

В прошлой заметке я описывал как передавать списки значений в контроллер. Теперь опишу как создать пользовательский привязчик к модели, который будет привязывать параметр  со значениями, разделенными запятыми, к списку значений в контроллере. Допустим есть такой контроллер public void GetFilters(List<int> filterIds) { } И мы хотим передать список значений таким образом /GetFilters?filterIds=1,2,3 Для этого создадим класс — привязчик …

Прикрепляем файлы к письму (.net, c#)

private void AttachFiles(MailMessage mail, string[] files) { foreach (string file in files) mail.Attachments.Add(new Attachment(file, GetMediaType(file))); } private string GetMediaType(string file) { string fileExt = Path.GetExtension(file).ToLower(); switch (fileExt) { case "pdf": return MediaTypeNames.Application.Pdf; case "rtf": return MediaTypeNames.Application.Rtf; case "zip": return MediaTypeNames.Application.Zip; case "gif": return MediaTypeNames.Image.Gif; case "jpeg": return MediaTypeNames.Image.Jpeg; case "jpg": return MediaTypeNames.Image.Jpeg; case "tiff": return …