Retrieving OS Platform .NET Core
Review


Don't use underscores in enum values NotSupported
The enum value with integer value 0 represents its default value; I would make this NotSupported in order to avoid some bias
GetPlatform is a method name; prefer Platform as property name
Since the platform won't change while your program is running, consider using a Lazy to retrieve the platform once.


Don't like if-statements?

Let's first refactor the enum to match aforementioned conventions:

public enum OSPlatform
{
    NotSupported,
    Windows,
    OSX,
    Linux,
}


We could then use a Lazy:

 static readonly Lazy&lt;OSPlatform&gt; platform = new Lazy&lt;OSPlatform&gt;(GetPlatform, true);
 public static OSPlatform Platform =&gt; platform.Value;


And refactor the intitial method using a helper generator using a simple ValueTuple to avoid the boiler-plate if-statements. 

private static IEnumerable
    &lt;(OSPlatform Platform, RuntimeOSPlatform RuntimePlatform)?&gt; EnumeratePlatforms() 
{
    yield return (OSPlatform.Windows, RuntimeOSPlatform.Windows);
    yield return (OSPlatform.OSX, RuntimeOSPlatform.OSX);
    yield return (OSPlatform.Linux, RuntimeOSPlatform.Linux);
}

private static OSPlatform GetPlatform()
{
    return EnumeratePlatforms().FirstOrDefault(p 
       =&gt; RuntimeInformation.IsOSPlatform(p.Value.RuntimePlatform))?.Platform ?? default;
}


I've created an alias to avoid redundant namespace code:

using RuntimeOSPlatform = System.Runtime.InteropServices.OSPlatform;


If you want to have some fun, you could refactor this solution to use Expression and some reflection to avoid creating hard-coded tuples.