<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/sources/milanjovanovic/best-of/2026/04" -->

---
title: Best Milan Jovanović posts — April 2026 | daily.dev
description: The most upvoted Milan Jovanović posts from April 2026, curated by the daily.dev community.
canonical: https://daily.dev/sources/milanjovanovic/best-of/2026/04
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/sources/milanjovanovic/best-of/2026/04
og:type: website
og:site_name: daily.dev
og:title: Best Milan Jovanović posts — April 2026 | daily.dev
og:description: The most upvoted Milan Jovanović posts from April 2026, curated by the daily.dev community.
og:image: https://media.daily.dev/image/upload/s--VAY5ToZt--/f_auto/v1724209435/public/daily.dev%20-%20open%20graph
---

# Best of Milan Jovanović — April 2026

1. 1  
[](https://daily.dev/posts/why-i-switched-to-primary-constructors-for-di-in-c--ctodiijms "Why I Switched to Primary Constructors for DI in C#")  
Article  
![Avatar of milanjovanovic](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/78d8abfb692746538410dee47f93e566)Milan Jovanović·20w  
Why I Switched to Primary Constructors for DI in C#  
C# 12 primary constructors can significantly reduce boilerplate in DI service classes by eliminating field declarations, constructor bodies, and assignments. The author shares their experience switching to primary constructors for ASP.NET Core services, explaining the key pitfall: parameters are captured as mutable variables, not readonly fields, meaning accidental reassignment compiles without warning. The recommended approach is to use primary constructors freely in DI service classes where accidental reassignment is unlikely, but fall back to traditional constructors for validation-heavy types, multiple constructor overloads, or classes with too many dependencies.  
53  
4

[See all Milan Jovanović archives](/sources/milanjovanovic/best-of)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://daily.dev/sources/milanjovanovic/best-of/2026/04#page","url":"https://daily.dev/sources/milanjovanovic/best-of/2026/04","name":"Best Milan Jovanović Posts — April 2026","description":"The most upvoted Milan Jovanović posts from April 2026, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/sources/milanjovanovic/best-of/2026/04#items","numberOfItems":1,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/why-i-switched-to-primary-constructors-for-di-in-c--ctodiijms","name":"Why I Switched to Primary Constructors for DI in C#"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Sources","item":"https://daily.dev/sources"},{"@type":"ListItem","position":3,"name":"Milan Jovanović","item":"https://daily.dev/sources/milanjovanovic"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/sources/milanjovanovic/best-of"},{"@type":"ListItem","position":5,"name":"April 2026"}]}]}
```

