dotnetomaniak.pl - Artykuły z tagiem C#

Po dość znacznej przerwie powracamy jeszcze na chwilę do tematu Dependency Injection. Pamiętacie cykl i moment, do którego dotarliśmy? Zastosowaliśmy SRP by uprościć kod. Wprowadziliśmy jawne zależności między komponentami i ubraliśmy je w interfejsy. Spróbowaliśmy napisać własny kontener Dependency Injection, a potem zobaczyliśmy dlaczego lepiej użyć jednak czegoś gotowego. I stanęło na Autofac, kiedy to obiecałem “kilka finalnych refleksji”.

Dziel się z innymi:
DI: Kilka refleksji po wprowadzonych zmianach

Sztuka programowania 2110 dni, 15 godzin, 17 minut temu rroszczyk 253 źrodło rozwiń

Wiele osób pewnie już od dawna korzysta LINQPad. Osobiście nigdy nie miałem okazji korzystać z tego narzędzia i zawsze myślałem, że w przypadku TDD jest ono po prostu zbędne. Ostatnio jednak zainstalowałem z ciekawości i okazało się bardzo przydatne w przypadku testowania krótkich snippet’ów. Czasami chcę sprawdzić tylko np. formatowanie daty i wtedy zwykle uruchamiałem osobną instancję Visual Studio,  immediate windows w VS albo po prostu pisałem konkretny test. Nie zawsze jednak jest to wygodne i prak...

Tagi: bazy danych, C#, Linq
Dziel się z innymi:
LINQPad – przydatne narzędzie w eksperymentowaniu z C#\LINQ

Sztuka programowania 2119 dni, 19 godzin, 50 minut temu rroszczyk 369 źrodło rozwiń

Tworząc aplikacje mobilne, nie jest łatwo zbudować model danych, który idealnie odpowiadałby potrzebom aktualnego widoku. Problem staje się jeszcze bardziej złożony, w sytuacji gdy korzystamy z API, które zwraca ogólny model, dla rożnych końcówek. W takiej sytuacji, programista aplikacji mobilnej musi sam zadbać o odpowiednie wyświetlenie i sformatowanie otrzymanych danych.. W świecie Universal Apps problem ten można rozwiązać na różne sposoby. Osobiście preferuje tutaj wykorzystanie architektury MVVM, k...

Dziel się z innymi:
Universal Apps - mapowanie danych z API na potrzeby XAML

Web 2119 dni, 19 godzin, 50 minut temu rroszczyk 125 źrodło rozwiń

Working with Tasks is a modern way of writing asynchronous code in an easy and flexible manner. It is quite straightforward to start using them, so usually developers do not investigate thoroughly the topic. Unfortunately this often leads to unpleasant surprises - especially when it comes to exception handling. Having this in mind let's take a look how to handle exceptions in Task and what can happen if we do it wrong.

Dziel się z innymi:
[EN] TPL - exception handling and UnobservedTaskException issue

Windows 2130 dni, 9 godzin, 35 minut temu nocturn 94 źrodło rozwiń

Technologie typu WPF, czy Universal Apps aż proszą się o zastosowanie MVVM, jednak wsparcie dla tej architektury po stronie tych rozwiązań, jest umówmy się - co najwyżej średnie. Bardzo mało kontrolek posiada wbudowaną obsługę komend. I nawet jeśli się ona pojawia, to i tak nie dotyczy ona wszystkich dostępnych w kontrolce zdarzeń. Poza tym, nie ma jawnego wsparcia dla ViewModeli. Standardowo zbudowana aplikacja składa się ze stron wykorzystujących code-behind. Na szczęścia oba te problemy można w pewnym...

Dziel się z innymi:
Więcej MVVM w Universal Apps dzięki Behaviors SDK

Sztuka programowania 2149 dni, 18 godzin, 44 minuty temu rroszczyk 199 źrodło rozwiń

Semantyczny model dostarcza nam wiele informacji o kodzie, które zwykle uzyskuje się po kompilacji. Na przykład przeładowanie metod jest dużo łatwiejsze do określenia już po kompilacji.  Oznacza to, że nie jest już to  klasyczna, statyczna analiza kodu. Z tego względu, najpierw danych kod należy skompilować za pomocą...

Tagi: .Net, C#, roslyn
Dziel się z innymi:
Roslyn: Analiza przepływu danych–semantyczny model

Narzędzia 2164 dni, 18 godzin, 51 minut temu rroszczyk 127 źrodło rozwiń

Standardowy player Microsoftu (kontrolka MediaElement), z którego możemy korzystać m.in. w Universal Apps, ma wiele zalet i funkcjonalności, ale ma też niestety dwie poważne wady. Po pierwsze - nie jest do końca zgodny z MVVM. Nie mamy tutaj wsparcia dla komend, czy ViewModeli. Po drugie, jest bardzo słabo rozszerzalny. Jakakolwiek modyfikacja w większości przypadków jest bardzo trudna, a przecież przy kontrolkach tego typu, rozszerzalność, czy skalowalność to wręcz podstawa. Czy jest zatem jakieś wyjści...

Dziel się z innymi:
Player Framework by Microsoft - customizacja

Inne 2164 dni, 18 godzin, 51 minut temu rroszczyk 174 źrodło rozwiń

Roslyn to nie tylko parsowanie kodu, ale również zarządzanie projektem\solucją za pomocą WorkspaceAPI. Pisząc różne narzędzia dla programistów, oprócz analizy kodu, zwykle chcemy mieć informacje o kontekście danego kodu – np. nazwie pliku czy projekcie w którym znajduje się dana klasa. Workspace API, jak nie trudno domyślić się, opiera się na abstrakcyjnej klasie Workspace.  Zwykle jednak pracować będziemy z MSBuildWorkspace, która pozwala nam zarządzać .sln czy .csproj:MSBuildWorkspace msWorkspace = M...

Tagi: .Net, C#, roslyn
Dziel się z innymi:
Roslyn: Workspace API

Narzędzia 2164 dni, 18 godzin, 51 minut temu rroszczyk 117 źrodło rozwiń

W poprzednim wpisie przedstawiłem klasę CSharpSyntaxWalker – przydatną przy analizie drzewa kodu. Dzięki niej, automatycznie bez pisania kodu rekurencyjnego jesteśmy w stanie przejść przez każdy element kodu. Dzisiaj o analogicznym rozwiązaniu ale służącym do przepisywania kodu a nie tylko jego analizowania. Mechanizm działa bardzo podobnie do CSharpSyntaxWalker. Wystarczy, że stworzymy klasę dziedziczącą po CSharpSyntaxRewriter:publicclass CustomRewriter : CSharpSyntaxRewriter { publicoverride Synt...

Tagi: .Net, C#, roslyn
Dziel się z innymi:
Roslyn–przepisywanie kodu

Inne 2170 dni, 18 godzin, 1 minutę temu rroszczyk 138 źrodło rozwiń

Tworzenie instrukcji warunkowych jest czymś naturalnym w praktycznie każdym języku programowania. Trudno sobie jest wyobrazić kod źródłowy nawet najprostszej aplikacji, który byłby pozbawiony konstrukcji IF - w pewnym sensie tego rodzaju instrukcje, kontrolują przepływ sterowania. Warto wiedzieć, że w C# nasze możliwości na tym polu są jeszcze większe m.in. dzięki dyrektywom preprocesora. Dyrektywy preprocesora wpływają na to co zostanie skompilowane. Możemy np. inny fragment kodu przeznaczyć dla kompila...

Dziel się z innymi:
Efektywne wykorzystanie dyrektyw preprocessora

Sztuka programowania 2178 dni, 16 godzin, 3 minuty temu rroszczyk 362 źrodło rozwiń

W ostatnim poście pokazałem jak za pomocą LINQ można przeglądać drzewo kodu. Czasami jest to jednak niewygodne. Załóżmy, że piszemy konwerter z C# na jakiś inny język. W takiej sytuacji, prawdopodobnie chcemy mieć dostęp do każdego elementu kodu. Możemy to zrobić za pomocą LINQ, ale jest to mało wygodne. Musielibyśmy pisać kod rekurencyjny, który dla skomplikowanych kodów jest jak wiadomo mało wydajny, a nawet może zakończyć się wyjątkiem OutOfMemory. Do dyspozycji jednak mamy klasę CSharpSyntaxWalker. ...

Dziel się z innymi:
Roslyn – przeglądanie drzewa

Sztuka programowania 2178 dni, 16 godzin, 3 minuty temu rroszczyk 129 źrodło rozwiń

Analiza kodu za pomocą LINQ to chyba esencja Roslyn.  Bez Roslyn, kod był dla nas jak zwykły tekst (string) i w przypadku jakiejkolwiek analizy, musieliśmy sami parsować tekst i rozpoznawać odpowiednie fragmenty....

Tagi: .Net, C#, Linq, roslyn
Dziel się z innymi:
Roslyn–analiza kodu za pomocą LINQ

Web 2178 dni, 16 godzin, 3 minuty temu rroszczyk 238 źrodło rozwiń

W poprzednim wpisie, w dużym skrócie przedstawiłem po co powstał Roslyn i komu może przydać się. W kilku kolejnych postach, zaprezentuję w praktyce jego najważniejsze funkcje. Zaczynami od scripting API.  APi szczególnie przydatne w przypadku edytorów do gier czy bardziej zaawansowanych reguł biznesowych. Zacznijmy od klasycznego “hello world”...

Tagi: .Net, C#, roslyn
Dziel się z innymi:
Roslyn – Scripting API

Narzędzia 2183 dni, 5 godzin, 45 minut temu rroszczyk 136 źrodło rozwiń

W architekturze WinRT możemy korzystać z dwóch bardzo przyjemnych kontrolek do prezentacji danych - ListView oraz GridView. Obie te kontrolki mają duże możliwości konfiguracyjne, posiadają sporo zdarzeń i można je również fajnie ostylować. Jednym słowem jest naprawdę dobrze;-) Naszą piękną, idealistyczną sielankę może jednak w łatwy sposób zakłócić, pewien dość prozaiczny problem, który nazywa się nadmiar danych. Tego rodzaju sytuacja zasadniczo nie ma żadnych pozytywów. Nasza aplikacja pochłonie duże il...

Implementacja dynamicznego doczytywania treści w kontrolce ListView

Sztuka programowania 2187 dni, 16 godzin, 47 minut temu rroszczyk 167 źrodło rozwiń

Aplikacje na telefon pełnią różne funkcje, ale z założenia często są one mobilnym odpowiednikiem stron WWW. I choć w dzisiejszych czasach coraz więcej mamy w sieci stron responsywnych, to i tak komfort pracy z dedykowanym programem wciąż często bywa znacznie wyższy. Nie oznacza to oczywiście, że strony WWW na przeglądarce telefonu są czymś złym.. czasem jest to naprawdę dobra opcja na start. Okazuje się również, że dzięki RWD możliwe jest również łatwe osadzanie pewnych fragmentów witryn bezpośrednio w a...

Dziel się z innymi:
Hakowanie strony w kontrolce WebView

Mobile development 2195 dni, 8 godzin, 21 minut temu rroszczyk 212 źrodło rozwiń

Have you ever written a program with such a complex algorithm that despite of using all processor cores the implementation wasn’t efficient enough? If yes, this is the moment you should consider using a more efficient device than CPU.

[EN] When processor is not enough | Future Processing

Sztuka programowania 2196 dni, 16 godzin, 52 minuty temu FutureProcessing 208 źrodło rozwiń

Rynek aplikacji mobilnych rozwija się niezwykle dynamicznie w ostatnich latach. Programy na telefony dotykają dzisiaj naprawdę wielu ważnych i istotnych obszarów naszego codziennego życia. Coraz częściej tego rodzaju aplikacje funkcjonują w chmurze, dzięki czemu mamy łatwy dostęp do wszystkich niezbędnych nam informacji, niezależnie od tego gdzie jesteśmy i z jakiego urządzenia aktualnie korzystamy. Wykorzystanie chmury wiąże się najczęściej z użyciem odpowiedniego API, do którego podłączają się wszystki...

HttpClient - równoległe pobieranie danych z różnych żródeł

Mobile development 2202 dni, 17 godzin, 45 minut temu rroszczyk 341 źrodło rozwiń

Nie jest to pierwszy wpis o SpecFlow i podstawy framework’a znajdziecie oczywiście  w archiwum. W SpecFlow można definiować tzw. “Scenario outline”, które służą jako szablony dla testów. Oczywiście data-driven testing nie powinno być nadużywane i w szczególności dla acceptance tests nie ma to wielkiego sensu. SpecFlow jest często używany dla testów systemowych i UI, gdzie nie testujemy wszystkich możliwych kombinacji danych wejściowych. Czasami jednak chcemy mieć bardziej sparametryzowany zestaw testów...

Dziel się z innymi:
SpecFlow – data driven testing

Sztuka programowania 2205 dni, 18 godzin, 21 minut temu rroszczyk 123 źrodło rozwiń

W ASP.NET MVC 6.0 (ASP.NET 5.0) usunięto metodę Html.Action. Służyła ona głównie do generowania widoków częściowych. Na przykład, jeśli jakąś funkcjonalność mieliśmy na każdej stronie, wtedy warto było stworzyć child-action i renderować osobno każdą część. Tworzyliśmy wtedy osobny widok i akcję  w kontrolerze. Główny widok wywoływał daną akcję (child-action) na kontrolerze i renderował wskazaną część. Więcej o ChildAction można poczytać tutaj. Dlaczego zatem Html.Action został usunięty?

Dziel się z innymi:
ASP.NET MVC 6.0 – ViewComponents

Web 2212 dni, 12 godzin, 28 minut temu rroszczyk 218 źrodło rozwiń

Dekorator to jeden se strukturalnych wzorców projektowych, dzięki któremu możemy wykorzystać kompozycję w alternatywie do dziedziczenia w celu rozszerzenia zachowania klasy. W przypadku dziedziczenia klasa rozszerzana jest w trakcie kompilacji w przeciwieństwie do dekoratorów, które rozszerzają klasy w trakcie działania programu.    Wzorzec projektowy Dekorator pozwala na dynamiczne przydzielanie danemu obiektowi nowych zachowań. Dekoratory dają elastyczność podobną do tej, jaką daje dziedziczenie, o...

Dziel się z innymi:
Wzorce projektowe – dekoratory

Sztuka programowania 2214 dni, 11 godzin, 16 minut temu rroszczyk 477 źrodło rozwiń

1 2... 30 31 32 33 34 35... 71 72

Najaktywniejsi

1
(32 895,6)
2
(32 816,53)
3
(27 178,29)
4
(21 178,88)
5
(20 336,33)
6
(13 018,14)
7
(10 531,65)
8
(9 775,28)
9
(8 866,31)
10
(6 837,96)
11
(6 214,22)
12
(5 393,84)
13
(4 157,41)
14
(4 026,73)
15
(3 908,07)
16
(3 599,64)
17
(3 448,35)
18
(3 318,39)
19
(3 224,66)
20
(3 221,45)