Internal classes injecteren met SimpleInjector

Internal classes injecteren met SimpleInjector

Omdat we onze applicaties modulair opzetten komt het nogal eens voor dat een ontwikkelaar gebruik maakt van modules van een andere ontwikkelaar. De meeste voorbeelden van IOC-containers initialiseren de container vanuit de client applicatie, met als gevolg dat deze applicatie toegang moet hebben tot alle classes die geregistreerd moeten worden bij de container. Voor dit voorbeeld gebruik ik een web api (.NET MVC fullstack), die we stapsgewijs zullen opzetten met gebruik van SimpleInjector als IOC-framework. Stap 1 Installeer de benodigde NuGet packages om SimpleInjector te kunnen gebruiken in je web api project. Stap 2 Creëer in je App_Start map een InjectorConfig class aan en geef deze een statische methode waarin …

Nieuwe features in C# 7

Nieuwe features in C# 7

Met de komst van Visual Studio 2017 is er ook een nieuwe versie van C# beschikbaar gekomen. In de nieuwe versie zijn weer een aantal verbeteringen in de taal doorgevoerd. Deze verbeteringen zullen we in deze blog even de revue laten passeren. Out variabelen In C# 6.0 hebben we een variabele van een expliciet type nodig om door te geven aan een methode die een out-parameter verwacht. Met de komst van C# 7.0 kunnen we dit stukje code herschrijven tot In deze codeconstructie kun je zelfs gebruik maken van het var-keyword De scoping van de variabele is het omvattende blok, dus na de aanroep naar de methode die een out-parameter …

.Net Core Series: EF of EF.Core?

.Net Core Series: EF of EF.Core?

.Net Core Series Artikel 2: EF of EF.Core? Als architect en ontwikkelaar kom je ongetwijfeld op een bepaald moment voor de keuze te staan welk platform te kiezen voor het abstraheren van het domein model. Dit blog artikel behandelt overwegingen die een rol zouden moeten spelen bij de keuze van de ORM- module van .Net (Entity Framework). Bij het lezen van dit artikel is enige kennis en ervaring vereist over het Entity Framework en ORM principes in het algemeen. Uitleg hierover is buiten beschouwing gelaten van dit artikel. Welke overwegingen moet ik nemen voor het maken van een keuze tussen Entity Framework vs Entity Framework.Core. Het doel van dit artikel …

Hoe ‘deferred execution’ je het leven zuur kan maken

Hoe ‘deferred execution’ je het leven zuur kan maken

Wanneer je gebruik maakt van Linq, is het belangrijk om het verschil te weten tussen deferred execution en immediate execution. Onoplettend gebruik van deferred execution kan je leven behoorlijk zuur maken. Zeker als er IQueryables vanuit Entity Framework en Linq to objects door elkaar gebruikt worden. Wat is “deferred execution” Stel je hebt een simpele repository waarmee je personen kunt opvragen op basis van hun achternaam en een persoon kunt toevoegen. En stel dat je deze repository als volgt gebruikt in code: Je zou nu waarschijnlijk verwachten dat de Linq query wordt uitgevoerd waar de repository wordt aangeroepen en dat je vervolgens een statische lijst met personen krijgt. In werkelijkheid …

Code analyse in Visual Studio

Code analyse in Visual Studio

Code analyse in Visual Studio De kwaliteit van code is heel belangrijk. Natuurlijk kun je door middel van code reviews een heleboel problemen boven water halen, maar het liefst wil je natuurlijk dat Visual Studio je hierbij zo veel mogelijk helpt. De tijd voor de code review kun je dan nuttig besteden om inhoudelijk over de gekozen oplossing te sparren en niet meer over de triviale zaken in de code. De ondersteuning voor het analyseren van je code verschilt behoorlijk per uitvoering van Visual Studio. In dit artikel behandelen we de mogelijkheden die beschikbaar zijn in de professional editie, want helaas heeft niet iedereen de beschikking over de Enterprise versie …

WPF Databinding – deel 1

WPF Databinding – deel 1

WPF Databinding – deel 1 Dit artikel is het eerste artikel in een reeks korte artikelen waarin we gaan kijken naar databinding binnen het Microsoft.NET WPF framework. Dit eerste artikel zal gaan over het ‘WAT’ van databinding. In de vervolg artikelen zullen we aan de hand van een eenvoudige WPF-applicatie ingaan op het ‘HOE’ van databinding binnen WPF. Waarom databinding? Voordat we ingaan op het ‘WAT’ van databinding, zullen we eerst even het ‘WAAROM’ trachten te beantwoorden. Databinding is een concept (mechanisme) dat ons leven als ontwikkelaar gewoon een stukje makkelijker maakt. Zonder databinding bestaat er geen relatie tussen de UI elementen en de bron van de data. Dit betekent …

Inversion of control, Dependency Injection en Service Locator pattern

Inversion of control, Dependency Injection en Service Locator pattern

Inversion of control, Dependency Injection en Service Locator pattern In deel 1 en 2 van deze serie hebben we gekeken naar handmatige dependency injection en naar het service locator pattern. We hebben hierbij gezien dat we code geschikt kunnen maken voor automatische testen, maar we hebben ook gezien dat beide manieren van werken nog behoorlijke nadelen hebben. Hoewel het voor legacy soms de enige manier is om code te verbeteren, is het aan te raden voor nieuwe projecten gebruik te maken van IoC-frameworks. Voldoen aan het Inversion Principle door een IoC framework Het belangrijkste voordeel van een IoC-framework is dat afhankelijkheden (zowel in de constructor als publieke properties) automatisch geïnjecteerd …

Sneak preview nu en de toekomst

Sneak preview nu en de toekomst

Sneak preview nu en de toekomst Bronnen: https://docs.efproject.net/en/latest/efcore-vs-ef6/features.html https://blog.tonysneed.com/2016/01/22/ef6-asp-net-core-mvc6/ https://blog.tonysneed.com/2016/01/06/wcf-is-dead-long-live-mvc-6/ .Net Core Series Medio 2016 heeft Microsoft haar nieuwe telg in de .Net familie het licht laten zien. De ‘Core’ familie van producten is een volledige herbouw van .Net. Geen zorgen, Microsoft zal blijven investeren in patches, bugfixes van het klassieke -en volledige- .Net platform. Deze blogpost is het introductie artikel van een serie van drie blogposts over .Net Core. Blijf onze blog volgen voor de volgende artikelen. Het thema waarbij .Net Core 1.0 zich onderscheid van de klassieke .Net Framework 4.6 is het deployment model. .Net Framework 4.6 werkt alleen op het Windows platform en is daarmee beperkt in …

Inversion of control, Dependency Injection en Service Locator pattern (deel 2)

Inversion of control, Dependency Injection en Service Locator pattern (deel 2)

Inversion of control, Dependency Injection en Service Locator pattern (deel 2) Het service locator pattern In deel 1 van deze serie hebben we gekeken hoe we door handmatige dependency injection de bovenstaande code beter kunnen laten voldoen aan de SOLID principes en beter kunnen testen. We hebben hier gezien dat we door handmatige dependency injection maar deels in staat zijn om de code beter losgekoppeld te krijgen. Uiteindelijk is er een plek in de code waar je de concrete implementaties van objecten moet meegeven en dat maakt dat deze manier van werken bij een echte applicatie vaak al snel niet meer werkt doordat er een hele boom aan afhankelijkheden moet …

Inversion of control, Dependency Injection en Service Locator pattern (deel 1)

Inversion of control, Dependency Injection en Service Locator pattern (deel 1)

Inversion of control, Dependency Injection en Service Locator pattern (deel 1) Handmatige dependency injection Het Dependency Inversion Principle zegt dat een bepaalde class geen afhankelijkheid mag hebben van lagergelegen classes in de applicatie: In het bovenstaande voorbeeld zie je dat de Presentation class afhankelijk is van de Service class welke op zijn beurt weer afhankelijk is van de Repository class. Deze afhankelijkheid (tight coupling) wordt gecreëerd op het moment dat een class zelf een instantie van een andere class aanmaakt. In een architectuur die op deze manier functioneert zijn objecten niet helder van elkaar gescheiden waardoor, naarmate de applicatie groeit, er allerlei dwarsverbanden en afhankelijkheden ontstaan die het lastig maken …