函数作为变量抛出错误NotImplementedException未处理

时间:2013-10-06 21:34:15

标签: c# string function variables

好吧所以我已经在我的c#脚本中添加了一个函数来获取ip地址并将输出作为字符串发送到变量heres my source

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.Specialized;
using System.Net;
using System.IO;


namespace ConsoleApplication1
{
class Program
{
    static void Main(string[] args)
    {
        string URL = "http://localhost/test2.php";
        WebClient webClient = new WebClient();

        NameValueCollection formData = new NameValueCollection();
        formData["var1"] = formData["var1"] = string.Format("MachineName: {0}", System.Environment.MachineName);
        formData["var2"] = stringGetPublicIpAddress();
        formData["var3"] = "DGPASS";

        byte[] responseBytes = webClient.UploadValues(URL, "POST", formData);
        string responsefromserver = Encoding.UTF8.GetString(responseBytes);
        Console.WriteLine(responsefromserver);
        webClient.Dispose();
        System.Threading.Thread.Sleep(5000);
    }

    private static string stringGetPublicIpAddress()
    {
        throw new NotImplementedException();
    }
        private string GetPublicIpAddress()
    {
        var request = (HttpWebRequest)WebRequest.Create("http://ifconfig.me");

        request.UserAgent = "curl"; // this simulate curl linux command

        string publicIPAddress;

        request.Method = "GET";
        using (WebResponse response = request.GetResponse())
        {
            using (var reader = new StreamReader(response.GetResponseStream()))
            {
                publicIPAddress = reader.ReadToEnd();
            }
        }

        return publicIPAddress.Replace("\n", "");

    }
    }
    }

基本上我已经创建了这个功能

private static string stringGetPublicIpAddress()

我发送它作为变量

formdata["var2"] = stringGetPublicIpAddress();

我收到此错误

throw new NotImplementedException();  === NotImplementedException was unhandled

1 个答案:

答案 0 :(得分:0)

你......没有实现这个方法。你有这个:

private static string stringGetPublicIpAddress()
{
    throw new NotImplementedException();
}

当然,无论何时调用该方法,它都会抛出异常。看起来你 实现了你想要的方法,但是:

private string GetPublicIpAddress()
{
    // the rest of your code
}

也许这是一些复制/粘贴错误的结果?尝试摆脱抛出异常并将实现的方法更改为静态的小方法:

private static string GetPublicIpAddress()
{
    // the rest of your code
}

然后更新您从中调用它的任何地方:

stringGetPublicIpAddress();

到此:

GetPublicIpAddress();

这看起来像是以奇怪的方式出现了复制/粘贴错误。或者你可能正在努力解决静态和实例方法之间的差异?也许您实现了该方法,但编译器建议您需要一个静态方法?关于静态与实例方法/成员的内容有很多内容,我不会真正深入到这里。这是面向对象编程中的一个重要概念。

在这种特殊情况下,由于您处于Main中的静态方法的上下文中,因此您在该类(Main类)上从Program调用的任何内容也需要是静态的,除非你像这样创建Program实例

var program = new Program();

这将允许您在Program上调用实例方法:

program.SomeNonStaticMethod();

但对于像这样的小型应用程序,这并不是必需的。