ISupportInitializeAdapter.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. using System;
  2. using System.ComponentModel;
  3. using ILRuntime.CLR.Method;
  4. using ILRuntime.Runtime.Enviorment;
  5. using ILRuntime.Runtime.Intepreter;
  6. using AppDomain = ILRuntime.Runtime.Enviorment.AppDomain;
  7. namespace ET
  8. {
  9. public class ISupportInitializeAdapter: CrossBindingAdaptor
  10. {
  11. private static CrossBindingMethodInfo mBeginInit_0 = new CrossBindingMethodInfo("BeginInit");
  12. private static CrossBindingMethodInfo mEndInit_1 = new CrossBindingMethodInfo("EndInit");
  13. public override Type BaseCLRType => typeof (ISupportInitialize);
  14. public override Type AdaptorType => typeof (Adapter);
  15. public override object CreateCLRInstance(AppDomain appdomain, ILTypeInstance instance)
  16. {
  17. return new Adapter(appdomain, instance);
  18. }
  19. public class Adapter: ISupportInitialize, CrossBindingAdaptorType
  20. {
  21. private ILTypeInstance instance;
  22. private AppDomain appdomain;
  23. public Adapter()
  24. {
  25. }
  26. public Adapter(AppDomain appdomain, ILTypeInstance instance)
  27. {
  28. this.appdomain = appdomain;
  29. this.instance = instance;
  30. }
  31. public ILTypeInstance ILInstance => instance;
  32. public void BeginInit()
  33. {
  34. mBeginInit_0.Invoke(this.instance);
  35. }
  36. public void EndInit()
  37. {
  38. mEndInit_1.Invoke(this.instance);
  39. }
  40. public override string ToString()
  41. {
  42. IMethod m = appdomain.ObjectType.GetMethod("ToString", 0);
  43. m = instance.Type.GetVirtualMethod(m);
  44. if (m == null || m is ILMethod)
  45. {
  46. return instance.ToString();
  47. }
  48. return this.instance.Type.FullName;
  49. }
  50. }
  51. }
  52. }