ILHelper.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Reflection;
  6. using ILRuntime.CLR.Method;
  7. using ILRuntime.CLR.TypeSystem;
  8. using ILRuntime.Runtime.Enviorment;
  9. using UnityEngine;
  10. using AppDomain = System.AppDomain;
  11. namespace Model
  12. {
  13. public static class ILHelper
  14. {
  15. public static unsafe void RegisterRedirection()
  16. {
  17. MethodInfo mi = typeof(Log).GetMethod("Debug", new Type[] { typeof(string) });
  18. Init.Instance.AppDomain.RegisterCLRMethodRedirection(mi, ILRedirection.LogDebug);
  19. MethodInfo mi2 = typeof(Log).GetMethod("Info", new Type[] { typeof(string) });
  20. Init.Instance.AppDomain.RegisterCLRMethodRedirection(mi2, ILRedirection.LogInfo);
  21. MethodInfo mi3 = typeof(Log).GetMethod("Error", new Type[] { typeof(string) });
  22. Init.Instance.AppDomain.RegisterCLRMethodRedirection(mi3, ILRedirection.LogError);
  23. }
  24. public static unsafe void RegisterDelegate()
  25. {
  26. Init.Instance.AppDomain.DelegateManager.RegisterMethodDelegate<AChannel, System.Net.Sockets.SocketError>();
  27. Init.Instance.AppDomain.DelegateManager.RegisterMethodDelegate<byte[], int, int>();
  28. }
  29. public static unsafe void RegisterILAdapter()
  30. {
  31. Assembly assembly = typeof(Init).Assembly;
  32. foreach (Type type in assembly.GetTypes())
  33. {
  34. object[] attrs = type.GetCustomAttributes(typeof(ILAdapterAttribute), false);
  35. if (attrs.Length == 0)
  36. {
  37. continue;
  38. }
  39. object obj = Activator.CreateInstance(type);
  40. CrossBindingAdaptor adaptor = obj as CrossBindingAdaptor;
  41. if (adaptor == null)
  42. {
  43. continue;
  44. }
  45. Init.Instance.AppDomain.RegisterCrossBindingAdaptor(adaptor);
  46. }
  47. }
  48. }
  49. }