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 XElementProjekt 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