代理类C#如何调用变量
我有一个类处理我买的一个项目的代理。我正在寻找学习,同时做一些修改,这个项目 我的问题是如何从无效通话中获取variabel?我使用了调用代理。NewProxy();就是从我的列表中获取新代理的那个。但我想做的是为它得到的代理创建一个变量,这样我就可以在日志文件中列出它 我的班级看起来像这样代理类C#如何调用变量,c#,proxy,C#,Proxy,我有一个类处理我买的一个项目的代理。我正在寻找学习,同时做一些修改,这个项目 我的问题是如何从无效通话中获取variabel?我使用了调用代理。NewProxy();就是从我的列表中获取新代理的那个。但我想做的是为它得到的代理创建一个变量,这样我就可以在日志文件中列出它 我的班级看起来像这样 class Proxy { private static List<string> proxies = new List<string>(); private sta
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或类似的。但不想把事情搞砸。我试试看。你真是帮了大忙!!现在似乎是正确的,但如何将答案转换为字符串或变量?因此,我可以为当前使用的代理设置一个变量。