Using log4net in your Azure Functions

As I mentioned in my earlier post, there are 2 options available to you out of the box for logging. You can either use the TraceWriter or the ILogger. While this is fine when you are doing some small projects or Functions, it can become a problem if you want your Azure Functions to reuse earlier developed logic or modules used in different projects, a Web API for example. In these shared class libraries you are probably leveraging the power of a ‘full-blown’ logging library. Read more →

Using dependency injection in your AutoMapper profile

So, one of my previous customers reached out to me a couple of weeks ago. They had a question concerning on how to use dependency injection in their AutoMapper profiles. For this project we were using profiles which were dynamically loaded inside the application using MEF and were using Autofac for dependency injection. The way you would normally load all of these profiles is by using the AddProfiles method when initializing AutoMapper. Read more →

Splitting unit of work and repository functionality

For years we (a lot of people I know and myself included) have been using the Unit of Work and Repository pattern combined with each other. This makes quite a lot of sense as, in most cases, they both have something to do with your database calls. When searching for both of these patterns you'll often be directed to a popular article on the Microsoft documentation site. The sample code over there has a very detailed implementation on how you can implement both of these patterns for accessing and working with your database. Read more →

Using the decorator pattern with Autofac

On a recent project I had to implement the decorator pattern to add some functionality to the existing code flow. Not a big problem of course. However, on this project we were using Autofac for our dependency injection framework so I had to check how to implement this pattern using the framework built-in capabilities. One of the reasons I always resort to Autofac is the awesome and comprehensive documentation. It's very complete and most of the time easy to understand. Read more →