public static IEnumerable <IProxyListProvider> Load(string pluginDir) { var pluginFolder = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), pluginDir); var injectedDlls = new DirectoryInfo(pluginFolder).GetFiles("*.dll").Select(x => x.FullName); List <Assembly> assemblies = new List <Assembly>(); foreach (var item in injectedDlls) { assemblies.Add(AssemblyLoadContext.Default.LoadFromAssemblyPath(item)); } List <IProxyListProvider> providers = new List <IProxyListProvider>(); foreach (Assembly ass in assemblies) { foreach (Type type in ass.GetTypes()) { foreach (var itf in type.GetInterfaces()) { if (itf == typeof(IProxyListProvider)) { IProxyListProvider mapperProvider = Activator.CreateInstance(type) as IProxyListProvider; providers.Add(mapperProvider); } } } } return(providers); }
private static void SetAuto() { var proxyListProviders = MapperProvider.Load("mappers").ToList(); Random d = new Random(); int index = d.Next(0, proxyListProviders.Count - 1); IProxyListProvider provider = proxyListProviders[index]; List <Proxy> proxies = provider.GetProxyList().ToList(); int proxyIndex = d.Next(0, proxies.Count - 1); Proxy proxy = proxies[proxyIndex]; var proxySetter = GetProxySetter(); if (proxySetter != null) { proxySetter.Set(proxy.Host, proxy.Port); } }