Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代理类C#如何调用变量_C#_Proxy - Fatal编程技术网

代理类C#如何调用变量

代理类C#如何调用变量,c#,proxy,C#,Proxy,我有一个类处理我买的一个项目的代理。我正在寻找学习,同时做一些修改,这个项目 我的问题是如何从无效通话中获取variabel?我使用了调用代理。NewProxy();就是从我的列表中获取新代理的那个。但我想做的是为它得到的代理创建一个变量,这样我就可以在日志文件中列出它 我的班级看起来像这样 class Proxy { private static List<string> proxies = new List<string>(); private sta

我有一个类处理我买的一个项目的代理。我正在寻找学习,同时做一些修改,这个项目

我的问题是如何从无效通话中获取variabel?我使用了调用代理。NewProxy();就是从我的列表中获取新代理的那个。但我想做的是为它得到的代理创建一个变量,这样我就可以在日志文件中列出它

我的班级看起来像这样

class Proxy
{
    private static List<string> proxies = new List<string>();
    private static int proxyIndex = 0;

    public static WebProxy GetProxy()
    {
        string[] proxy = proxies[proxyIndex].Split(':');
        WebProxy wp = new WebProxy(proxy[0], Convert.ToInt32(proxy[1]));
        return wp;
    }

    public static void NewProxy()
    {
        if (proxyIndex < proxies.Count - 1)
        {
            proxyIndex++;
        }
        else
        {
            proxyIndex = 0;
        }
    }

    public static void AddProxy(string proxy)
    {
        proxies.Add(proxy);
    }

    public static void ClearProxy()
    {
        proxies.Clear();
    }

    public static void RemoveProxy(string proxy)
    {
        proxies.RemoveAll(a => a == proxy);
    }

    public static List<string> ListProxy()
    {
        return proxies;
    }
}
类代理
{
私有静态列表代理=新列表();
私有静态int proxyIndex=0;
公共静态WebProxy GetProxy()
{
string[]proxy=proxy[proxyIndex].Split(“:”);
WebProxy wp=新的WebProxy(代理[0],将.Convert.ToInt32(代理[1]);
返回可湿性粉剂;
}
公共静态void NewProxy()
{
if(代理索引<代理计数-1)
{
proxyIndex++;
}
其他的
{
proxyIndex=0;
}
}
公共静态void AddProxy(字符串代理)
{
代理。添加(代理);
}
公共静态void ClearProxy()
{
proxies.Clear();
}
公共静态void RemoveProxy(字符串代理)
{
RemoveAll(a=>a==proxy);
}
公共静态列表ListProxy()
{
返回代理;
}
}

您可以向类中添加事件:

public class ProxyGivenEventArgs : EventArgs
{
    public String ProxyName { get; private set; }
    public ProxyGivenEventArgs(String proxyName) 
    {
        this.ProxyName  = proxyName;
    }
}

public static class Proxy
{
    // ...

    public static event EventHandler<ProxyGivenEventArgs> ProxyGiven;
    private static void OnProxyGiven(String proxyName)
    {
        if (Proxy.ProxyGiven != null)
            Proxy.ProxyGiven(null, new ProxyGivenEventArgs(proxyName));
    } 


    public static WebProxy GetProxy()
    {
        string[] proxy = proxies[proxyIndex].Split(':');
        WebProxy wp = new WebProxy(proxy[0], Convert.ToInt32(proxy[1]));

        OnProxyGiven(proxy[0]);

        return wp;
    }
    // ...
}
p.S.:您可以定制
ProxyGivenEventArgs
以包含更多适合您需要的信息

例如,如果需要实例化代理的实例,则可以:

public class ProxyGivenEventArgs : EventArgs
{
    public WebProxy ProxyInstance { get; private set; }
    public ProxyGivenEventArgs(WebProxy proxy) 
    {
        this.ProxyInstance = proxy;
    }
}

//...
private static void OnProxyGiven(WebProxy proxy)
{
    if (Proxy.ProxyGiven != null)
        Proxy.ProxyGiven(null, new ProxyGivenEventArgs(proxy));
} 

public static WebProxy GetProxy()
{
    string[] proxy = proxies[proxyIndex].Split(':');
    WebProxy wp = new WebProxy(proxy[0], Convert.ToInt32(proxy[1]));

    OnProxyGiven(wp);

    return wp;
}
然后像这样使用它:

Proxy.ProxyGiven += (sender, args) =>
    {
         Logger.Log("Proxy {0} is given.", args.ProxyName);
    };
Proxy.ProxyGiven += (sender, args) =>
    {
         Logger.Log("Proxy {0} is given.", args.ProxyInstance.ToString());
    };

p.S.1:如果您不熟悉事件模型,您可能需要阅读。

您的问题(对我来说)似乎不清楚。。介意再解释一下吗?有什么原因不能使其成为not void调用并返回代理吗?@eddie_cat:我该怎么做?只需更改方法上的返回类型,其中需要将“make a variable”从
void
更改为
string
,然后在方法的末尾返回相关的代理字符串。我已经尝试了大约15个小时来阅读这篇文章。不知怎的,我真的搞不懂。我把你的代码放在我的类中,让proxys执行最后一组代码。但它会抛出错误。首先,第一部分给出了这些类型的错误
Error 40预期的类、委托、枚举、接口或结构
,然后是一些错误
名称“Proxy”在当前上下文中不存在
现在看起来更好了,但它给出了这个错误
方法必须有一个返回。
在`私有静态onproxygived(String proxyName){if(Proxy.proxygived!=null)proxygived(null,new ProxyGivenEventArgs(proxyName));}`上,它直接指出了我的错误——在匆忙中,我忘记了编写方法的返回类型。这个问题已经在答案中解决了,或者你可以把
void
放在
onproxygive
之前-是的,我正在考虑添加void,我读了一些关于它的东西,它不可能是emtey或类似的。但不想把事情搞砸。我试试看。你真是帮了大忙!!现在似乎是正确的,但如何将答案转换为字符串或变量?因此,我可以为当前使用的代理设置一个变量。