SlideShare uma empresa Scribd logo
1 de 11
Baixar para ler offline
Reflection – нужно ли это нам?
(в формате беседы)
Почему беседа?
 Зачем вообще это нужно?
 Что мне это дает?
 Каковы успешные примеры?
Мы запоминаем только: новое и интересное
 В физике – явление изменения направления волнового фронта на границе двух сред с
разными свойствами, в котором волновой фронт возвращается в среду, из которой он
пришёл
 В философии – форма теоретической деятельности человека, направленную на
осмысление своих действий, всей человеческой культуры и её основ
 В программировании – процесс, во время которого программа может отслеживать и
модифицировать собственную структуру и поведение во время выполнения
Термин Reflection
В переводе на Русский язык: отражение
Reflection в программировании
 Ранние языки программирования изначально поддерживали
рефлексию инструкции как данные, самомодифицирующийся код
 С появлением первых, высокоуровневых языков программирования
это свойсво исчезло...
 Пока не появились языки программирования с рефлексией встроенной
непосредственно в их систему типов
Брайан Кантвелл Смит в 1982 году в своей докторской дисертации
ввел в обиход термин Reflection:
“Procedural Reflection – allows programs to access and manipulate structural
descriptions of their own operations and structures”
 Получать информацию о сборках и типах определенных в них
 Создавать экземпляры классов
 Вызывать методы или обращаться к полям классов
 Создавать новый код (Reflection Emit)
 Не важно на каком языке Вы пишите (C#, Visual Basic, Ваш выбор...)
 И все это можно делать во время исполнения программы!
Reflection в .NET
Namespaces: System.Reflection, System.Type
Позволяет:
пакет
SMS
СМС по 2 копейки или история одного
проекта
 Если Вы большие и у вас много денег то, любой оператор
готов работать с вами за сущие копейки
 А если Вы маленькие, то приходится включать
«соображалку»…
Сервер Дешёвый китайский
смартфон
Сотовый оператор
SMS
Gateway
App
У всех есть адрес...
 Обращение к SMS Gateway по HTTP протоколу
 HttpClient, WebClient и все-все использует System.Uri
 Формат URI определен в RFC 3986 и в нем
символ “:” допустим почти везде, но
не все создатели SMS Gateway читают RFC…
В сети без адресов никуда, а в .NET без System.Uri
http://192.168.1.1:8888/send.html?smsto=95156853хх&smsbody=Hi:+Andrew
Hi:+
Не стоит быть умнее ваших пользователей…
заменяют “%3A”обратно на “:” даже если
вы их об этом их не просили…
Но парни из Microsoft с этим не согласны и
Hi:+Hi%3A+
В чем сила, брат? В Рефлексии!
Reflection
 Найдем место, куда можно вклинится
после конвертации “%3A” в “:”
1. Отнаследуемся от DelegatingHandler
2. И скормим его в конструктор HttpClient
 Ну, а внутри SendAsync метода и вернем
все «как и было»!
Чуть-чуть кода:
Reflection
Вопросы !?

Mais conteúdo relacionado

Destaque

Артур Чеканов «Microframeworks» (Python Meetup)
Артур Чеканов  «Microframeworks» (Python Meetup)Артур Чеканов  «Microframeworks» (Python Meetup)
Артур Чеканов «Microframeworks» (Python Meetup)DataArt
 
Thriller powerpoint finished
Thriller powerpoint finishedThriller powerpoint finished
Thriller powerpoint finishedAbbey Cotterill
 
76363027 bo-cau-hoi-sinh-dai-cuong 2
76363027 bo-cau-hoi-sinh-dai-cuong 276363027 bo-cau-hoi-sinh-dai-cuong 2
76363027 bo-cau-hoi-sinh-dai-cuong 2doanh2801
 
Иван Гришаев «Саблайм текст – ИДЕ моей мечты
Иван Гришаев «Саблайм текст – ИДЕ моей мечтыИван Гришаев «Саблайм текст – ИДЕ моей мечты
Иван Гришаев «Саблайм текст – ИДЕ моей мечтыDataArt
 
Powell on leadership
Powell on leadershipPowell on leadership
Powell on leadershipLouis Collins
 
Макс Волошин «Микросервисы на практике»
Макс Волошин «Микросервисы на практике»Макс Волошин «Микросервисы на практике»
Макс Волошин «Микросервисы на практике»DataArt
 
Jornal HOJE! - Edição 840
Jornal HOJE! - Edição 840Jornal HOJE! - Edição 840
Jornal HOJE! - Edição 840Jornal HOJE!
 
Леонид Шевцов «Clojure в деле»
Леонид Шевцов «Clojure в деле»Леонид Шевцов «Clojure в деле»
Леонид Шевцов «Clojure в деле»DataArt
 
33-я встреча сообщества IT talk Spb
33-я встреча сообщества IT talk Spb33-я встреча сообщества IT talk Spb
33-я встреча сообщества IT talk SpbDataArt
 
" Angular 2.0", Андрей Альперт, DataArt
 " Angular 2.0", Андрей Альперт, DataArt " Angular 2.0", Андрей Альперт, DataArt
" Angular 2.0", Андрей Альперт, DataArtDataArt
 
Testing in projects
Testing in projectsTesting in projects
Testing in projectsDataArt
 
Hong Kong
Hong KongHong Kong
Hong KongDataArt
 
Dc brochure vietv1 (1)
Dc brochure vietv1 (1)Dc brochure vietv1 (1)
Dc brochure vietv1 (1)Nguyet Vo
 
Ярослав Воронцов - Security
Ярослав Воронцов - SecurityЯрослав Воронцов - Security
Ярослав Воронцов - SecurityDataArt
 
Languor
Languor Languor
Languor DataArt
 

Destaque (16)

Артур Чеканов «Microframeworks» (Python Meetup)
Артур Чеканов  «Microframeworks» (Python Meetup)Артур Чеканов  «Microframeworks» (Python Meetup)
Артур Чеканов «Microframeworks» (Python Meetup)
 
Thriller powerpoint finished
Thriller powerpoint finishedThriller powerpoint finished
Thriller powerpoint finished
 
76363027 bo-cau-hoi-sinh-dai-cuong 2
76363027 bo-cau-hoi-sinh-dai-cuong 276363027 bo-cau-hoi-sinh-dai-cuong 2
76363027 bo-cau-hoi-sinh-dai-cuong 2
 
BARCLAYS TRAVEL
BARCLAYS TRAVELBARCLAYS TRAVEL
BARCLAYS TRAVEL
 
Иван Гришаев «Саблайм текст – ИДЕ моей мечты
Иван Гришаев «Саблайм текст – ИДЕ моей мечтыИван Гришаев «Саблайм текст – ИДЕ моей мечты
Иван Гришаев «Саблайм текст – ИДЕ моей мечты
 
Powell on leadership
Powell on leadershipPowell on leadership
Powell on leadership
 
Макс Волошин «Микросервисы на практике»
Макс Волошин «Микросервисы на практике»Макс Волошин «Микросервисы на практике»
Макс Волошин «Микросервисы на практике»
 
Jornal HOJE! - Edição 840
Jornal HOJE! - Edição 840Jornal HOJE! - Edição 840
Jornal HOJE! - Edição 840
 
Леонид Шевцов «Clojure в деле»
Леонид Шевцов «Clojure в деле»Леонид Шевцов «Clojure в деле»
Леонид Шевцов «Clojure в деле»
 
33-я встреча сообщества IT talk Spb
33-я встреча сообщества IT talk Spb33-я встреча сообщества IT talk Spb
33-я встреча сообщества IT talk Spb
 
" Angular 2.0", Андрей Альперт, DataArt
 " Angular 2.0", Андрей Альперт, DataArt " Angular 2.0", Андрей Альперт, DataArt
" Angular 2.0", Андрей Альперт, DataArt
 
Testing in projects
Testing in projectsTesting in projects
Testing in projects
 
Hong Kong
Hong KongHong Kong
Hong Kong
 
Dc brochure vietv1 (1)
Dc brochure vietv1 (1)Dc brochure vietv1 (1)
Dc brochure vietv1 (1)
 
Ярослав Воронцов - Security
Ярослав Воронцов - SecurityЯрослав Воронцов - Security
Ярослав Воронцов - Security
 
Languor
Languor Languor
Languor
 

Semelhante a Андрей Вересов - .NET Reflection

Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin
 
Programming history. Algorithm
Programming history. AlgorithmProgramming history. Algorithm
Programming history. AlgorithmIhor Porotikov
 
эволюция языков программирования
эволюция языков программированияэволюция языков программирования
эволюция языков программированияAndrey Radionov
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2SBTech
 
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...IT Share
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решенияВладимир Кожаев
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаSQALab
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Andrii Gakhov
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программистru_Parallels
 
Системный архитектор и поиск нирваны
Системный архитектор и поиск нирваныСистемный архитектор и поиск нирваны
Системный архитектор и поиск нирваныYehor Churilov
 
Art of coding and machine learning
Art of coding and machine learningArt of coding and machine learning
Art of coding and machine learningIllarion Khlestov
 
UAFPUG6 - PureMVC
UAFPUG6 - PureMVCUAFPUG6 - PureMVC
UAFPUG6 - PureMVCmandrew182
 
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha DmitryUafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha DmitryMax Rozdobudko
 
Programming Concepts
Programming ConceptsProgramming Concepts
Programming ConceptsMister_Lee
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийSoftengi
 
Software craftsmanship meetup #4
Software craftsmanship meetup #4Software craftsmanship meetup #4
Software craftsmanship meetup #4Pavel Veinik
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Sergey Nemchinsky
 

Semelhante a Андрей Вересов - .NET Reflection (20)

Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)Viacheslav Eremin about DOT NET (rus lang)
Viacheslav Eremin about DOT NET (rus lang)
 
Invisible
InvisibleInvisible
Invisible
 
Programming history. Algorithm
Programming history. AlgorithmProgramming history. Algorithm
Programming history. Algorithm
 
эволюция языков программирования
эволюция языков программированияэволюция языков программирования
эволюция языков программирования
 
терминология vol.2
терминология vol.2терминология vol.2
терминология vol.2
 
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...Никита Вельмаскин -  Интерпретатор или думаем над скриптовым движком для Ваше...
Никита Вельмаскин - Интерпретатор или думаем над скриптовым движком для Ваше...
 
игровая логика, проблемы и решения
игровая логика, проблемы и решенияигровая логика, проблемы и решения
игровая логика, проблемы и решения
 
Wild microservices and imaginary DevOps
Wild microservices and imaginary DevOpsWild microservices and imaginary DevOps
Wild microservices and imaginary DevOps
 
Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1Семинар ФКН: современные подходы к разработке ПО - часть 1
Семинар ФКН: современные подходы к разработке ПО - часть 1
 
Что должен уметь Linux программист
Что должен уметь Linux программистЧто должен уметь Linux программист
Что должен уметь Linux программист
 
Системный архитектор и поиск нирваны
Системный архитектор и поиск нирваныСистемный архитектор и поиск нирваны
Системный архитектор и поиск нирваны
 
Art of coding and machine learning
Art of coding and machine learningArt of coding and machine learning
Art of coding and machine learning
 
UAFPUG6 - PureMVC
UAFPUG6 - PureMVCUAFPUG6 - PureMVC
UAFPUG6 - PureMVC
 
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha DmitryUafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
Uafpug 8 Presentation Puremvc Papervision Gallery Kuriksha Dmitry
 
PureMVC and Papervision
PureMVC and PapervisionPureMVC and Papervision
PureMVC and Papervision
 
Programming Concepts
Programming ConceptsProgramming Concepts
Programming Concepts
 
Автоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложенийАвтоматизированный подход к локализации корпоративных приложений
Автоматизированный подход к локализации корпоративных приложений
 
Software craftsmanship meetup #4
Software craftsmanship meetup #4Software craftsmanship meetup #4
Software craftsmanship meetup #4
 
Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"Конспект лекций по курсу "Шаблоны разработки ПО"
Конспект лекций по курсу "Шаблоны разработки ПО"
 

Mais de DataArt

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR PartnersDataArt
 
Event management в IT
Event management в ITEvent management в IT
Event management в ITDataArt
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from insideDataArt
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)DataArt
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDataArt
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtDataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...DataArt
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's lifeDataArt
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиDataArt
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOpsDataArt
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real lifeDataArt
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестированияDataArt
 
Selenoid
SelenoidSelenoid
SelenoidDataArt
 
Selenide
SelenideSelenide
SelenideDataArt
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"DataArt
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...DataArt
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGDataArt
 

Mais de DataArt (20)

DataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human ApproachDataArt Custom Software Engineering with a Human Approach
DataArt Custom Software Engineering with a Human Approach
 
DataArt Healthcare & Life Sciences
DataArt Healthcare & Life SciencesDataArt Healthcare & Life Sciences
DataArt Healthcare & Life Sciences
 
DataArt Financial Services and Capital Markets
DataArt Financial Services and Capital MarketsDataArt Financial Services and Capital Markets
DataArt Financial Services and Capital Markets
 
About DataArt HR Partners
About DataArt HR PartnersAbout DataArt HR Partners
About DataArt HR Partners
 
Event management в IT
Event management в ITEvent management в IT
Event management в IT
 
Digital Marketing from inside
Digital Marketing from insideDigital Marketing from inside
Digital Marketing from inside
 
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)What's new in Android, Igor Malytsky ( Google Post I|O Tour)
What's new in Android, Igor Malytsky ( Google Post I|O Tour)
 
DevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проектDevOps Workshop:Что бывает, когда DevOps приходит на проект
DevOps Workshop:Что бывает, когда DevOps приходит на проект
 
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArtIT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
IT Talk Kharkiv: «‎Soft skills в IT. Польза или вред? Максим Бастион, DataArt
 
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han... «Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
«Ноль копеек. Спастись от выгорания» — Сергей Чеботарев (Head of Design, Han...
 
Communication in QA's life
Communication in QA's lifeCommunication in QA's life
Communication in QA's life
 
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьмиНельзя просто так взять и договориться, или как мы работали со сложными людьми
Нельзя просто так взять и договориться, или как мы работали со сложными людьми
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
 
DevOps in real life
DevOps in real lifeDevOps in real life
DevOps in real life
 
Codeless: автоматизация тестирования
Codeless: автоматизация тестированияCodeless: автоматизация тестирования
Codeless: автоматизация тестирования
 
Selenoid
SelenoidSelenoid
Selenoid
 
Selenide
SelenideSelenide
Selenide
 
A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"A. Sirota "Building an Automation Solution based on Appium"
A. Sirota "Building an Automation Solution based on Appium"
 
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
Эмоциональный интеллект или как не сойти с ума в условиях сложного и динамичн...
 
IT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNGIT talk: Как я перестал бояться и полюбил TestNG
IT talk: Как я перестал бояться и полюбил TestNG
 

Андрей Вересов - .NET Reflection

  • 1. Reflection – нужно ли это нам? (в формате беседы)
  • 2. Почему беседа?  Зачем вообще это нужно?  Что мне это дает?  Каковы успешные примеры? Мы запоминаем только: новое и интересное
  • 3.  В физике – явление изменения направления волнового фронта на границе двух сред с разными свойствами, в котором волновой фронт возвращается в среду, из которой он пришёл  В философии – форма теоретической деятельности человека, направленную на осмысление своих действий, всей человеческой культуры и её основ  В программировании – процесс, во время которого программа может отслеживать и модифицировать собственную структуру и поведение во время выполнения Термин Reflection В переводе на Русский язык: отражение
  • 4. Reflection в программировании  Ранние языки программирования изначально поддерживали рефлексию инструкции как данные, самомодифицирующийся код  С появлением первых, высокоуровневых языков программирования это свойсво исчезло...  Пока не появились языки программирования с рефлексией встроенной непосредственно в их систему типов Брайан Кантвелл Смит в 1982 году в своей докторской дисертации ввел в обиход термин Reflection: “Procedural Reflection – allows programs to access and manipulate structural descriptions of their own operations and structures”
  • 5.  Получать информацию о сборках и типах определенных в них  Создавать экземпляры классов  Вызывать методы или обращаться к полям классов  Создавать новый код (Reflection Emit)  Не важно на каком языке Вы пишите (C#, Visual Basic, Ваш выбор...)  И все это можно делать во время исполнения программы! Reflection в .NET Namespaces: System.Reflection, System.Type Позволяет:
  • 6. пакет SMS СМС по 2 копейки или история одного проекта  Если Вы большие и у вас много денег то, любой оператор готов работать с вами за сущие копейки  А если Вы маленькие, то приходится включать «соображалку»… Сервер Дешёвый китайский смартфон Сотовый оператор SMS Gateway App
  • 7. У всех есть адрес...  Обращение к SMS Gateway по HTTP протоколу  HttpClient, WebClient и все-все использует System.Uri  Формат URI определен в RFC 3986 и в нем символ “:” допустим почти везде, но не все создатели SMS Gateway читают RFC… В сети без адресов никуда, а в .NET без System.Uri http://192.168.1.1:8888/send.html?smsto=95156853хх&smsbody=Hi:+Andrew Hi:+
  • 8. Не стоит быть умнее ваших пользователей… заменяют “%3A”обратно на “:” даже если вы их об этом их не просили… Но парни из Microsoft с этим не согласны и Hi:+Hi%3A+
  • 9. В чем сила, брат? В Рефлексии! Reflection  Найдем место, куда можно вклинится после конвертации “%3A” в “:” 1. Отнаследуемся от DelegatingHandler 2. И скормим его в конструктор HttpClient  Ну, а внутри SendAsync метода и вернем все «как и было»!