AroLibraries to biblioteka zawierająca rozwiązania, które są pomocne przy wytworzeniu oprogramowania. Jednym z podstawowych rozwiązań to wykorzystanie rozszerzonych metod. Takie rozwiązanie pozwala na: - ukrycie części implementacji - czytelniejszą składnię - wielokrotne wykorzystanie tego samego kodu
Zamiast za każdym razem pisząc:
Bitmap image = new Bitmap("picture.bmp");
Stream memoryStream = new MemoryStream();
image.Save(memoryStream, ImageFormat.Bmp);
byte[] bytes = new byte[memoryStream.Length];
memoryStream.Position = 0;
memoryStream.Read(bytes, 0, (int)memoryStream.Length);
memoryStream.Close();
var binary = new Binary(bytes);
return binary;
Możemy zapisać w formie:
Bitmap image = new Bitmap("picture.bmp");
image.ToBinary();
Kod z wykorzystaniem extension methods jest zdecydowanie czytelniejszy. Poniżej przedstawiam parę ciekawszych rozwiązań za pomocą AroLibraries:
9.8F . IsBetween(9, 10);
//określa czy liczba 9.8 jest w przedziale 9 i 10
DateTime.Now.IsWeekend();
// sprawdza czy dzisiaj jest weekend
DateTime.Now.ToSecondsFromEpoch();
// data w formacie Epoch
DateTime.Now.EqualsToHour(new DateTime(1986, 03, 29, 12, 0, 0));
//sprawdza czy teraz jest ta sama godzina
"4AAB7F67-A898-442a-884A-364411D584EC".IsValidGuid();
//sprawdza czy string jest w formacie GUDI
"mymail@zzzzzzz.com". IsValidEmailAddress();
//sprawdza czy string jest w formacie e-maila
string words = "Some words about Library";
words.Reverse();
// odwraca string ("yrarbiL tuoba sdrow emoS")
words.GetRightSideOfString(13);
// zwraca prawą stronę stinga "about Library"
words.CountWords();
//liczy wyrazy
words.ReplaceOnce("a","");
//zamienia tylko pierwsze wystąpienie w tekście
words.ToMd5();
//zwraca skrót MD5 z tekstu
new Exception("0", new Exception("1", new Exception("2", new Exception("3"))))
. GetMostInner();
//zwraca najbardziej wewnętrzny wyjątek (Exception nr "3")
var numbers = 1.IterateTo(10);
//iteruje od 1 do 9
numbers.IndexOf(6);
//zwraca index liczby 6
numbers.Repeat(2, true);
//{1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9}
numbers.Repeat(2, false);
// {1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9}
numbers.Shuffle();
//miesza elementy
numbers.Swap(1,2);
//zamienia miejscami element nr 1 z elementem nr 2
numbers.ToString(";");
// zwraca string elementów oddzielonymi średnikiem ( "1; 2; 3; 4; 5; 6; 7; 8; 9")
9.In(numbers);
//sprawdza czy liczba 9 jest w danej kolekcji
9.ToMonthName("Styczeń");
//zwraca nazwę miesiąca
'a'.IsVowel();
//sprawdza czy jest samogłoską
var persons = new[]
{
new Person {
FirstName = "Arek",
LastName = "XYZ",
Age = 26},
};
persons.ToDataTable();
// zmienia kolekcje w tabelę
persons.OrderBy(x => x.Age);
//sortuje po danym polu
Bitmap image = new Bitmap("picture.bmp");
image.ToBinary();
//konwersja do typu Binary
image.SaveJpeg("pic.jpg");
//zapisuje do formatu jpeg
image.Fill(Color.Black);
//zwraca obrazek cały pomalowany na czarno
image.IsPixelInImage(-1, 100);
// sprawdza czy można pobrać pixel o podanych współrzędnych
image.GetPixels();
// zwraca wszystkie kolory na obrazku
image.ToByte();
//konwersja do byte[]
image.ToByte().OpenBytesAsFile(".bmp");
// otwiera plik w zewnętrznym edytorze
TextBox tb= new TextBox();
tb.WriteLine("Text");
//pisze po textboxie
DirectoryInfo di= new DirectoryInfo("c:");
di.GetDirectorySize();
//zwraca wielkość katalogu
Stream stream= GetStream();
stream.SaveToFile("Text.txt");
//zapisuje stream do pliku
Stream textStream= new MemoryStream();
stream.CopyStreamTo(textStream);
//kopiuje do nowego źródła
XmlNode node = GetXmlNode();
node.ToXElement();
//zwraca XElement
Projekt jeszcze nie jest w pełni stworzony. W przyszłości będę chciał stworzyć do niego testy jednostkowe.
Liczne extension methods można znaleźć pod tym linkiem, a kod źródłowy projektu można pobrać z portalu codeplex.

Brak komentarzy:
Prześlij komentarz