예제 #1
0
        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);
        }
예제 #2
0
        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);
            }
        }