In the evolving landscape of programming languages, type systems continue to be a fundamental differentiator in how we express our code’s intent. One powerful feature that many modern languages offer, but C# has traditionally lacked, is union types (also known as sum types or discriminated unions). Today, we’ll explore what union types are, why they…
Category
.NET
Containerizing .NET Framework apps
As more and more companies are embracing container-based infrastructure workflows, I often find myself getting pulled into conversations on how to deal with “heritage” .NET Framework applications. Let’s take a look at what it takes to put your most common workload types into a container. You’ll need Docker Desktop installed running in Windows container mode….
Hidden dangers of implicit interface implementations
C# 8 has added support for default interface implementation, meaning that you can define a method body right on the interface which will be used as automatic implementation in any class implementing the interface. There’s however a nasty error that is very easily created and hard to detect when using this new feature. Consider the…
Informers – the next LINQ abstraction
The introduction of LINQ based API in .NET has revolutionized how developers process collections of objects. Traditional approaches involved running nested, difficult to read loops often involving complex state machines. LINQ has introduced high-level functional fold operators that can be applied to some “source repository” in order to establish a logical pipeline that allows filters,…
Code Generation with .NET 5 – Builder pattern
Learn how you to use Roslyn and .NET 5 source generation to automate the creation of builder pattern in your code
Building Efficient .NET Docker Images
Learn how to use NMica to automatically create efficient docker images for your .NET apps and greatly reduce size of your images between builds.
Hacking .NET – rewriting code you don’t control
Learn how to target and rewrite .NET methods at runtime including those in core and third party libraries.