Jednym z fundamentów WPF’a są zasoby – Resources. Definiowane w ResourceDictionary czyli słowniku zasobów. Każdy element słownika posiada swój klucz, który używamy do pobrania zasobu „z bazy”.
autor: Niedawno uczestniczyłem w Study Group poświęconej architekturze aplikacji organizowanym przez Łódzką grupę profesjonalistów IT & .NET, gdzie przedstawiałem prezentację p.t. "Rozszerzalne aplikacje w .NET (czyli MAF i MEF)". Tych, którzy chcieliby się zapoznać z prezentacją lub kodem źródłowym, który powstał podczas prezentacji, zapraszam do obejrzenia mojej prezentacji umieszczonej na portalu SlideShare.
Architektura 4658 dni, 10 godzin, 23 minuty temu 132 źrodło rozwiń
Na podstawie dwóch ostatnich wpisów ("[MAF 01] Rzut okiem na Managed Aadd-in Framework (System.AddIn)" , "[MAF 02] Przykład prostej aplikacji z obsługą wtyczek z wykorzystaniem Managed Aadd-in Framework (System.AddIn)") oraz MSDN, postanowiłem skompresować przedstawione informacje, by zebrać je wszystkie na jednej kartce papieru. Wspomniane informacje o MAF na kartce papieru, czyli "MAF w pigułce" ("MAF in a nutshell"), dostępne jest jako PDF lub obrazek (jpg). Wersja PDF (dostępna przez Google Docs, ab...
Autor: Zostałem ostatnio zapytany jak można zaimplementować aplikację, bazującej na .NET, która miałaby być rozszerzana za pomocą wtyczek (czasem nazywanych też: Add-In, Add-On, Rozszerzenie, Extension, Plug-In, Snap-In, ...), z których każda uruchamiana by była w bezpiecznym środowisku (np. odrębnej domenie aplikacyjnej). Przyjrzyjmy się więc jakie są możliwości tworzenia rozszzerzeń dla aplikacji (.NET) i jak można przy ich pomocy zapewnić wspomniane bezpieczeństwo. Sposób „wszystko zrobię sam (może ud...
W dzisiejszym poście kilka słów i imporcie implementacji. W poprzednich postach, pokazałem jak dokonywać prostych importów. Dzisiaj trochę więcej szczegółów. Dla przypomnienia, aby zaimportować (wstrzyknąć) implementację, w najprostszym przypadku używamy po prostu atrybutu Import:publicclass SampleViewModel { //... [Import] public IMessageBoxService MessageBoxService{get;set;} } Powyższy przykład reprezentuje wstrzyknięcie właściwości. W podobny sposób można wstrzykiwać parametry dla ko...
W ostatnim poście przedstawiłem MEF wraz z prostym przykładem. Dzisiaj przyjrzymy się dokładniej sposobom eksportu. Znamy już podstawowy sposób eksportu klasy:[Export(typeof(IMessageBoxService))] publicclass WpfMessageBoxService:IMessageBoxService { } Oprócz przekazania typu, można także użyć zwykłego string’a. Ze względu jednak na łatwość popełnienia literówki lepszym sposobem jest użycie typeof. Oprócz klas można również eksportować właściwości np.:publicclass Order { [Export("OrderValue")] ...
MEF jest kolejnym frameworkiem umożliwiającym tworzenie rozszerzalnych aplikacji. Pomijając marketing serwowany na różnych stronach, jest to po prostu biblioteka umożliwiająca dependency injection. W wersji .NET 4.0 została zintegrowana w .NET Framework i nie musi być instalowana osobno. Na oficjalnej stronie można sporo poczytać o budowie MEF’a jednak w poście chciałbym ograniczyć to do minimum ponieważ dla mnie osobiście, zbyt dokładne intro do tematu po prostu zniechęca mnie do dalszego czytania. Zac...
Architektura 4747 dni, 22 godziny, 26 minut temu 207 źrodło rozwiń
Analizując problem z działaniem aplikacji w środowisku produkcyjnym, czasami przydałoby się mieć możliwość sprawdzanie jakie argumenty są przesyłane do wywoływanych metod, zwłaszcza, w przypadku aplikacji desktopowych, gdzie nie mamy dostępu do pełnego zbioru danych, na którym pracuje użytkownik i musimy opierać się jedynie na informacjach zawartych w logach. Rozwiązaniem tego problemu jest dołączenie interceptora do kontenera IoC, który przy wywołaniu metody zapisywałby informacje o przesłanych argument...
Tak, MEF obsługuje typy generyczne! A jak to wykorzystać w swoim projekcie dowiesz się czytając ten artykuł.
Nie tak dawno przedstawiłem na spotkaniu Łódzkiej grupy profesjonalistów IT & .NET prezentację poświęconą „Managed Extensibility Framework” (patrz informacja: Prezentacja: "Wprowadzenie do Managed Extensibility Framework w .NET 4.0"). Tych, którzy chcieliby się zapoznać z prezentacją lub kodem źródłowym, który powstał podczas prezentacji, zapraszam do obejrzenia mojej prezentacji umieszczonej na portalu SlideShare
Ostatnio interesowała mnie sprawa użycia Unity razem z biblioteka MEFedMVV. Czemu w ogóle rozważałem taka kwestię? Otóż MEF pozwala jedynie zdefiniować na dwa sposoby jak dany obiekt ma być tworzony – czy będzie to jeden obiekt, czy obiekt będzie tworzony za każdym razem. Jeśli chcielibyśmy stworzyć jakieś bardziej zaawansowane reguły tworzenia obiektów (np. tworzenie nowego obiektu tylko dla danego wątku), wtedy musimy posłuż...
Popełniłem już ten artykuł dwa dni temu, jednak doszedłem do wniosku, iż był on zupełnie bez sensu. W związku z tym postanowiłem przepisać go na nowo. I oto jest – do dzieła więc.
Architektura 5541 dni, 12 godzin, 42 minuty temu 74 źrodło rozwiń
Od jakiegoś czasu pracuję nad uelastycznieniem i zapewnieniem rozszerzalności w dużej aplikacji ASP.NET. W związku z tym zacząłem poszukiwać w sieci sensownego gotowca implementującego wzorzec agregatora zdarzeń; wszak po co wyważać otwarte drzwi .W moich poszukiwaniach dotarłem do artykułu na blogu Denisa Vuyka. Opisuje on użycie agregatora zdarzeń w połączeniu z MEF (Managed Extensibility Framework). Implementacja została “wyciągnięta” z projektu Prism (Composite WPF). Pozostały w niej jednak pewne el...
Wydaje mi się, że była to najlepsza sesja na TechEd 2009, w jakiej miałem przyjemność brać udział, dlatego postanowiłem poświęcić jej osobną notkę. Wcześniej coś tam słyszałem o MEFie, ale na tyle mało, że chciałem dowiedzieć się więcej, szczególnie, że ta technologia znajduje się na liście moich “TODO” [ostatnio mam wrażenie, że ta lista raczej będzie się wydłużać niż skracać – przyp. autora]. O samej technologii dowiedziałem się, że jest to framework, który największy nacisk kładzie na rozszerzalność i...
Architektura 5660 dni, 45 minut temu 81 źrodło rozwiń