DomainTool.cs 1.1 KB

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