Practical tips for clean C#

I obsess over keeping code as lean as possible and removing absolutely everything that doesn't have an explicit purpose. Having worked with C# for many years, I see some unfortunate patterns repeat themselves. Here, I describe some practical tips on what to look for, what to avoid and how to fix it.

Moving from WCF to gRPC

As part of migrating a fairly large (for our team size) code base into modern technologies, moving away from WCF as our internal communications protocol was essential, as WCF is not supported in modern .NET (.NET Core, if you like).