Wyrażenie regularne na zakresie liczb

Dwie pierwsze liczby mieszczą się w zakresie 01 do 35, następnie istnieją od dwóch do czterech cyfr, a na końcu cyfry z przedziału od 01 do 99. Po dwóch pierwszych cyfrach i przed dwiema ostatnimi, mogą istnieć spacje, ale nie muszą. Oto przykład: 35 1234 99, 01123401
Ponieższe wyrażenie spełnia te wymagania

^(0[1-9]|1[0-9]|2[0-9]|3[0-5])(\s*)(\d{2,4})(\s*)(0[1-9]|[1-9][0-9])$

Sprawdzenie wartości NULL

Przydatna metoda (extension method) sprawdzająca czy objekt ma wartość null i rzucająca wyjątek

public static T ThrowIfNull(this T value, string variableName) where T : class
{
if (value == null)
{
throw new NullReferenceException(string.Format(Resources.Messages.ValueIsNull, variableName));
}

return value;
}

Użycie:

myObject.ThrowIfNull("myObject")

AutoMapper i KeyValuePair

Ponieważ właściwości Key i Value zdefiniowane w strukturze KeyValuePair są tylko do odczytu (nie posiadają seterów) nie można bezpośrednio przypisać do nich wartości. Jeżeli korzystamy z biblioteki AutoMapper, do prawidłowego mapowania musimy użyć kontrukcji ConstructUsing

public class MyClass
{
	public byte Id { get; set; }
	public string Name { get; set; }
}

Mapper.CreateMap<MyClass, KeyValuePair>()
      .ConstructUsing(x => new KeyValuePair(x.Id, x.Name));

Action i przechwytywanie wyjątków

Wykorzystując Action, można stworzyć użyteczną metodę, pozwalającą na wykonanie jakiejkolwiek akcji i przechwycenie wyjątków w elegancki sposób. Dzięki takiemu rozwiązaniu nie musimy za każdym razem opakowywać wywołania naszych metod w blok try-catch, a jeśli chcemy dodać obsługę nowego wyjątku, zrobimy to tylko w tym jednym miejscu.

private void ExecuteWithCatchingException(Action action)
{
    try
    {
        action();
    }
    catch (MyException ex)
    {
        //obsługa wyjatku, logowanie		   
    }
    catch (SqlException ex)
    {
        //obsługa wyjatku, logowanie
    }
    catch (Exception ex)
    {
        //obsługa wyjatku, logowanie
    }
}

Wykorzystanie metody

ExecuteWithCatchingException(() =>
{
	//wykonanie akcji
    MyClass obj = new MyClass();
	obj.Print();
});