GreenMethods.cs 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //------------------------------------------------------------------------------
  2. // <copyright file="GreenMethods.cs" company="Microsoft">
  3. // Copyright (c) Microsoft Corporation. All rights reserved.
  4. // </copyright>
  5. // <owner current="true" primary="true">Microsoft</owner>
  6. // <owner current="true" primary="false">Microsoft</owner>
  7. //------------------------------------------------------------------------------
  8. using System;
  9. using System.Data.Common;
  10. using System.Diagnostics;
  11. using System.Reflection;
  12. using System.Security.Permissions;
  13. namespace System.Data.Common {
  14. internal static class GreenMethods {
  15. private const string ExtensionAssemblyRef = "System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=" + AssemblyRef.EcmaPublicKey;
  16. // For performance, we should convert these calls to using DynamicMethod with a Delegate, or
  17. // even better, friend assemblies if its possible; so far there's only one of these per
  18. // AppDomain, so we're OK.
  19. //------------------------------------------------------------------------------
  20. // Access to the DbProviderServices type
  21. private const string SystemDataCommonDbProviderServices_TypeName = "System.Data.Common.DbProviderServices, " + ExtensionAssemblyRef;
  22. internal static Type SystemDataCommonDbProviderServices_Type = Type.GetType(SystemDataCommonDbProviderServices_TypeName, false);
  23. //------------------------------------------------------------------------------
  24. // Access to the SqlProviderServices class singleton instance;
  25. private const string SystemDataSqlClientSqlProviderServices_TypeName = "System.Data.SqlClient.SqlProviderServices, " + ExtensionAssemblyRef;
  26. private static FieldInfo SystemDataSqlClientSqlProviderServices_Instance_FieldInfo;
  27. internal static object SystemDataSqlClientSqlProviderServices_Instance() {
  28. if (null == SystemDataSqlClientSqlProviderServices_Instance_FieldInfo) {
  29. Type t = Type.GetType(SystemDataSqlClientSqlProviderServices_TypeName, false);
  30. if (null != t) {
  31. SystemDataSqlClientSqlProviderServices_Instance_FieldInfo = t.GetField("Instance", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Static);
  32. }
  33. }
  34. object result = SystemDataSqlClientSqlProviderServices_Instance_GetValue();
  35. return result;
  36. }
  37. [System.Security.Permissions.ReflectionPermission(System.Security.Permissions.SecurityAction.Assert, MemberAccess=true)]
  38. private static object SystemDataSqlClientSqlProviderServices_Instance_GetValue() {
  39. object result = null;
  40. if (null != SystemDataSqlClientSqlProviderServices_Instance_FieldInfo) {
  41. result = SystemDataSqlClientSqlProviderServices_Instance_FieldInfo.GetValue(null);
  42. }
  43. return result;
  44. }
  45. }
  46. }