1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
using System;
using System.Security;
using System.Reflection;
using System.Security.Permissions;
namespace System.Xml
{
internal static class BinaryCompatibility
{
internal static bool TargetsAtLeast_Desktop_V4_5_2 { get { return _targetsAtLeast_Desktop_V4_5_2; } }
private static bool _targetsAtLeast_Desktop_V4_5_2 = RunningOnCheck("TargetsAtLeast_Desktop_V4_5_2");
[SecuritySafeCritical]
[ReflectionPermission(SecurityAction.Assert, Unrestricted = true)]
private static bool RunningOnCheck(string propertyName)
{
Type binaryCompatabilityType;
try
{
binaryCompatabilityType = typeof(Object).GetTypeInfo().Assembly.GetType("System.Runtime.Versioning.BinaryCompatibility", false);
}
catch (TypeLoadException)
{
return false;
}
if (binaryCompatabilityType == null)
return false;
PropertyInfo property = binaryCompatabilityType.GetProperty(propertyName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static);
if (property == null)
return false;
return (bool)property.GetValue(null);
}
}
}
|