DomainTool.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. //############################################################
  2. // https://github.com/yuzhengyang
  3. // author:yuzhengyang
  4. //############################################################
  5. using System;
  6. using Y.Utils.IOUtils.LogUtils;
  7. namespace Y.Utils.ReflectionUtils.ReflectionCoreUtils
  8. {
  9. public static class DomainTool
  10. {
  11. public static AppDomain CreateDomain(string friendlyName, string appBase)
  12. {
  13. try
  14. {
  15. AppDomainSetup setup = new AppDomainSetup();
  16. setup.ApplicationName = friendlyName;
  17. setup.ApplicationBase = appBase;
  18. //setup.PrivateBinPath = appBasePath + @"\Private";
  19. //setup.CachePath = setup.ApplicationBase;
  20. //setup.ShadowCopyFiles = "true";
  21. //setup.ShadowCopyDirectories = setup.ApplicationBase;
  22. AppDomain appDomain = AppDomain.CreateDomain(friendlyName, null, setup);
  23. return appDomain;
  24. }
  25. catch (Exception e)
  26. {
  27. Log.e(e.Message);
  28. }
  29. return null;
  30. }
  31. public static T CreateInstance<T>(AppDomain domain)
  32. {
  33. T obj = (T)domain.CreateInstanceAndUnwrap(typeof(T).Assembly.FullName, typeof(T).FullName);
  34. return obj;
  35. }
  36. }
  37. }