пятница, 2 сентября 2011 г.

Энкодинг и декодинг строки

В процессе работы часто приходится кодировать/декодировать строки. Обычно это предполагается делать в рамках Веб-приложения, потому использование конструкции
HttpContext.Current.Server.HtmlEncode(source); * This source code was highlighted with Source Code Highlighter.
выглядит оправданным. Но за рамками Веб приложения этот код порождает NullReferenceException. Потому я бы советовал использовать
HttpUtility.HtmlEncode(source); * This source code was highlighted with Source Code Highlighter.
Так как это будет работать везде. Как бонус - расширяющие методы для энкодинга
  1. public static string ToHtmlEncoded(this String source)
  2. {
  3.   var result = HttpUtility.HtmlEncode(source);
  4.   if (result != null) result = result.Replace("'", "'");
  5.   return result;
  6. }
  7. public static string ToHtmlDecoded(this String source)
  8. {
  9.   var result = source.Replace("'", "'");
  10.   result = HttpUtility.HtmlDecode(result);
  11.   return result;
  12. }
* This source code was highlighted with Source Code Highlighter.

четверг, 1 сентября 2011 г.

Идея

Практика создания простого приложения.

Всем доброе время суток.
Для меня в данный момент инетресна тема создания рабочего приложения (или серии приложений - как повезет) от начала и до самого конца. Тема интересная потому, что это позволяет:

1. Проверить свои силы в разных областях программирования
2. Изучить новые технологии
3. Встрясти начинающий заплывать ленью мозг

Полезные расширяющие методы

То ли где то увидел, то ли сам придумал.. в обще мне помню, откуда взял эти расширяющие методы, но мне с ними намного удобнее.
  1. namespace AMuradov.Extensions
  2. {
  3.   public static class StringExtensions
  4.   {
  5.     public static string StringFormat(this string source, object arg)
  6.     {
  7.       return string.Format(source, arg);
  8.     }
  9.  
  10.     public static string StringFormat(this string source, object arg0, object arg1)
  11.     {
  12.       return string.Format(source, arg0, arg1);
  13.     }
  14.  
  15.     public static string StringFormat(this string source, object arg0, object arg1, object arg2)
  16.     {
  17.       return string.Format(source, arg0, arg1, arg2);
  18.     }
  19.  
  20.     public static string StringFormat(this string source, params object[] args)
  21.     {
  22.       return string.Format(source, args);
  23.     }
  24.  
  25.     public static bool IsNullOrEmptyString(this string source)
  26.     {
  27.       return string.IsNullOrEmpty(source);
  28.     }
  29.   }
  30. }
* This source code was highlighted with Source Code Highlighter.

Этот код можно использовать так:

  1. var someString = "{0}";
  2. //...
  3. if (!someString.IsNullOrEmptyString())
  4. {
  5.   var text = someString.StringFormat(10);
  6.   // Что то делаем с этим текстом
  7. }
* This source code was highlighted with Source Code Highlighter.

Application_Error и объекты сессии

Наткнулся на вполне логичный но неочевидный баг.

Не следует использовать объекты сессии в событии Application_Error, поскольку исключение, приведшее к ошибке, может возникнуть в том контексте, в котором сессия ещё не доступна. Тогда попытка доступа к сессии порождает второе исключение.