55#if WINDOWS_UWP
66using Windows . System . Profile ;
77#endif
8+ using System . Runtime . CompilerServices ;
89
910namespace System
1011{
@@ -14,6 +15,7 @@ namespace System
1415 public static partial class OperatingSystem2
1516 {
1617#if __HAVE_XAMARIN_ESSENTIALS__ || ( ! NET5_0 && ! NET6_0 && ! NET7_0 )
18+ [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
1719 static int GetInt32 ( int value ) => value < 0 ? 0 : value ;
1820
1921 static bool IsVersionAtLeast ( int major_left , int minor_left , int build_left , int revision_left , int major_right , int minor_right , int build_right , int revision_right )
@@ -48,83 +50,37 @@ static bool IsVersionAtLeast(Version version_left, int major_right = 0, int mino
4850 /// <summary>
4951 /// 当前是否使用 Mono 运行时。
5052 /// </summary>
51- public static bool IsRunningOnMono { get ; } =
53+ [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
54+ public static bool IsRunningOnMono ( )
55+ {
5256#if __XAMARIN_ANDROID_v1_0__ || XAMARIN_MAC || XAMARIN_IOS || XAMARIN_WATCHOS || XAMARIN_TVOS
53- true ;
57+ return true ;
5458#else
55- Type . GetType ( "Mono.Runtime" ) != null ;
59+ return IsRunningOnMono_ ;
5660#endif
61+ }
5762
58- #if ! WINDOWS_UWP && ! ( NETSTANDARD1_0 || NETSTANDARD1_1 || NET35 || NET40 )
59- static byte isAvaloniaDesktop ;
60- #endif
61- static bool IsDesktop_ ( )
62- {
63- #if WINDOWS_UWP
64- return AnalyticsInfo . VersionInfo . DeviceFamily == "Windows.Desktop" ;
63+ #if __XAMARIN_ANDROID_v1_0__ || XAMARIN_MAC || XAMARIN_IOS || XAMARIN_WATCHOS || XAMARIN_TVOS
6564#else
66- #if __HAVE_XAMARIN_ESSENTIALS__
67- var idiom = DeviceInfo . Idiom ;
68- if ( idiom == DeviceIdiom . Desktop ) return true ;
69- if ( idiom != DeviceIdiom . Unknown ) return false ;
70- #endif
71- if ( Application . UseWindowsForms || Application . UseWPF )
72- {
73- return true ;
74- }
75- #if ! ( NETSTANDARD1_0 || NETSTANDARD1_1 || NET35 || NET40 )
76- else if ( Application . UseAvalonia )
77- {
78- if ( isAvaloniaDesktop == 0 )
79- {
80- try
81- {
82- var currentAvaloniaApplication = Application . Types . Avalonia ! . GetProperty ( "Current" , BindingFlags . Static | BindingFlags . Public ) ? . GetValue ( null ) ;
83- if ( currentAvaloniaApplication != null )
84- {
85- var applicationLifetime = Application . Types . Avalonia . GetProperty ( "ApplicationLifetime" , BindingFlags . Instance | BindingFlags . Public ) ? . GetValue ( currentAvaloniaApplication ) ;
86- if ( applicationLifetime != null )
87- {
88- if ( applicationLifetime . GetType ( ) . ToString ( ) . Contains ( "Desktop" ) )
89- {
90- isAvaloniaDesktop = 1 ;
91- }
92- }
93- }
94- }
95- catch
96- {
97- isAvaloniaDesktop = 2 ;
98- }
99- }
100- return isAvaloniaDesktop == 1 ;
101- }
65+ static bool IsRunningOnMono_ { get ; } = Type . GetType ( "Mono.Runtime" ) != null ;
10266#endif
103- return false ;
104- #endif
105- }
106-
107- /// <summary>
108- /// 指示当前应用程序是否正在 Desktop 上运行。
109- /// </summary>
110- public static bool IsDesktop =>
111- _IsDesktop . Value ;
112- static readonly Lazy < bool > _IsDesktop = new ( IsDesktop_ ) ;
11367
11468 /// <summary>
11569 /// 指示当前应用程序是否正在仅支持应用商店的平台上运行。
11670 /// </summary>
117- public static bool IsOnlySupportedStore =>
71+ [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
72+ public static bool IsOnlySupportedStore ( ) =>
11873#if NETFRAMEWORK || __MACOS__ || NET5_0_WINDOWS || NET6_0_WINDOWS || NET7_0_WINDOWS || __ANDROID__
11974 false ;
12075#else
121- IsIOS || IsWatchOS || IsTvOS ;
76+ IsIOS ( ) || IsWatchOS ( ) || IsTvOS ( ) ;
12277#endif
12378
12479 /// <summary>
12580 /// 获取当前系统版本号。
12681 /// </summary>
127- public static Version Version =>
82+ [ MethodImpl ( MethodImplOptions . AggressiveInlining ) ]
83+ public static Version Version ( ) =>
12884#if NETSTANDARD1_0
12985 throw new PlatformNotSupportedException ( ) ;
13086#elif NETSTANDARD1_1 || WINDOWS_UWP
0 commit comments