Configuration 2 – Part 3

Last time I covered a JSON extension to my IConfigurationFactory type. I demonstrated how my extension makes it very easy to read a local JSON file and return the results as an IConfiguration object. I also said that I would […]

Configuration 2 – Part 2

Last time I presented a factory for quickly creating IConfiguration objects from well known locations, like the app.config file. I also claimed that my approach was flexible enough to be extended without having to change any of the original factory […]

Configuration 2 – Part 1

For configuring my .NET Core applications I, like so many other .NET developers, turn to the Microsoft.Extensions.Configuration library for help. The library is well designed and it greatly simplifies the process of reading configuration settings from a variety of sources […]

Logger – Part 2

Last time I laid out a super quick customization for the Microsoft.Extensions.Logging NUGET package. The code I presented lives in one of my NUGET packages, named CG.Logging.Bus, which can be downloaded for free from: At the end of my […]

Logger – Part 1

I think most .NET Core developers are probably familiar with the Microsoft logging abstractions that are a part of the Microsoft.Extensions.Logging NUGET package. If not, you should probably take a look because the ILogger type, which is part of the […]

Message Bus – Part 2

In my last article I covered the overall architecture for a very simple messaging component that lives in my NUGET package named CG.Bus. That package exposes a type named IBus, which can be used to perform very simple send/receive operations […]

Message Bus – Part 1

I thought this time I might discuss my NUGET package for messaging. The package is called CG.Bus and, as always, I’ll post links for the source and bits at the end of the article. The package exposes a type called […]

Retry Helper

One of the smaller NUGET packages I’ve published in the last few years is CG.Retry. This package contains a single utility class, named RetryHelper, which simplifies the process of retrying blocks of code. Here’s a quick example:

  So, […]