Asynchronous JavaScript with async/await

In this course we will learn how to use the ES2017 async and await keywords to write asynchronous code that is more readable and easier to follow than equivalent code based on long promise chains or deeply nested callbacks.

Watch the Course

Detecting the Operating System in .NET Core

Sometimes, it might be necessary to detect on which operating system a .NET Core application is currently running. The various operating system platforms are described by the OSPlatform struct which defines three static properties:

  • OSPlatform.Windows
  • OSPlatform.OSX
  • OSPlatform.Linux

Using the RuntimeInformation class found in the System.Runtime.InteropServices namespace, we can check for a specific operating system:

if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
    Console.WriteLine("We're on macOS!");
}

The above code works and reads just fine, but we can go one step further and write a little helper class with three static methods for detecting Windows, macOS, and Linux:

using System.Runtime.InteropServices;

public static class OperatingSystem
{
    public static bool IsWindows() =>
        RuntimeInformation.IsOSPlatform(OSPlatform.Windows);

    public static bool IsMacOS() =>
        RuntimeInformation.IsOSPlatform(OSPlatform.OSX);

    public static bool IsLinux() =>
        RuntimeInformation.IsOSPlatform(OSPlatform.Linux);
}

This way, we can improve the readability of our platform check and make the code even terser at the same time. Now, it almost reads like a proper English sentence:

if (OperatingSystem.IsMacOS())
{
    Console.WriteLine("We're on macOS!");
}

Learn Node