AssemblyImport.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.IO;
  6. using System.Reflection;
  7. namespace SuperSocket.SocketEngine
  8. {
  9. /// <summary>
  10. /// AssemblyImport, used for importing assembly to the current AppDomain
  11. /// </summary>
  12. public class AssemblyImport : MarshalByRefObject
  13. {
  14. private string m_ImportRoot;
  15. /// <summary>
  16. /// Initializes a new instance of the <see cref="AssemblyImport"/> class.
  17. /// </summary>
  18. public AssemblyImport(string importRoot)
  19. {
  20. m_ImportRoot = importRoot;
  21. AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
  22. }
  23. //Process cannot resolved assemblies
  24. Assembly CurrentDomain_AssemblyResolve(object sender, ResolveEventArgs args)
  25. {
  26. AssemblyName name = new AssemblyName(args.Name);
  27. var assemblyFilePath = Path.Combine(m_ImportRoot, name.Name + ".dll");
  28. if (!File.Exists(assemblyFilePath))
  29. return null;
  30. return Assembly.LoadFrom(assemblyFilePath);
  31. }
  32. }
  33. }