Verifying your DI Container
A guide to verifying .NET dependency injection containers to catch missing registrations and captive dependencies at startup.
Steven Giesel is a Senior Software Engineer and Microsoft MVP with over 13 years of experience, specializing in .NET and modern backend development. He shares deep technical knowledge across topics such as C#, EF Core, RavenDB, distributed systems, and cloud-native architectures, and is an active speaker in the .NET community.
311 articles from this blog
A guide to verifying .NET dependency injection containers to catch missing registrations and captive dependencies at startup.
A tutorial on creating custom validation attributes in ASP.NET Core to implement complex data validation rules.
Explains how to use the Unit of Work pattern with domain events in a .NET DDD application to ensure data consistency.
Explains covariance and contravariance in C# generics with practical examples from the .NET Framework.
Explores performance improvements in .NET 8 Preview 3, comparing benchmarks for string operations and other features against .NET 6 and 7.
A guide to five practical C# extension methods for enhancing Task<T> operations, including fire-and-forget, retry, and timeout patterns.
Explains how to use C# source generators with regular expressions in .NET 7+ for improved performance and debuggability.
Explores using SIMD instructions and Vector<T> to accelerate LINQ queries in C# for high-performance data processing.
A tutorial on building a custom, reusable ToolTip component from scratch using Blazor WebAssembly, C#, and .NET.
A tutorial on using C# Source Generators to automatically embed build information like timestamp and configuration into your code during compilation.
Learn how to use the C# 'is not' operator with exception filtering to write cleaner and more maintainable error handling code.
A guide to implementing in-memory caching in .NET using IMemoryCache to improve application performance and reduce database calls.
A guide to building a simple, reflection-based object mapper in C#, explaining the core concepts behind libraries like AutoMapper.
Explains the Skip and Take methods in C# LINQ for implementing pagination and limiting query results.
A tutorial on building a custom cron job scheduler in ASP.NET Core using BackgroundService, for educational purposes.
A critical look at benchmarking in .NET, emphasizing the importance of context and real-world performance over isolated micro-optimizations.
Explores the Liskov Substitution Principle using the classic 'Is a square a rectangle?' example in object-oriented programming.
Explains the Humble Object design pattern for separating hard-to-test dependencies from core logic to improve unit testing in software development.
Compares performance of C# collection types like List<T>, ReadOnlyCollection<T>, ImmutableArray<T>, and ImmutableList<T> in iteration benchmarks.
Explores the shift from the traditional testing pyramid to a testing diamond model, emphasizing more integration tests for modern architectures.