在包含类之外引用时,为什么我的StreamReader字符串为空?

时间:2015-02-14 23:58:04

标签: c# unity3d streamreader

我正在使用StreamReader使用来自Web响应的数据填充字符串。这很好用,可以在课堂内访问。 (WebResponseEventArgs)当我尝试在别处访问它时,它返回一个空字符串。不为空,只是一个空字符串。

WebResponseEventArgs类:

public class WebResponseEventArgs : EventArgs 
{

public WebAsync WebAsyncObject;

public string ErrorMessage;

public JArray ValidationErrors;

public JArray Data;

public string ResponseString;

public string Test;

public StreamReader reader;

public WebResponseEventArgs(WebAsync webAsync)
{

    Test = "Hello!";

    WebAsyncObject = webAsync;

    Stream responseStream = WebAsyncObject.requestState.webResponse.GetResponseStream ();
    reader = new StreamReader (responseStream);
    ResponseString = reader.ReadToEnd ();

    if(ResponseString != "")
    {

        try {

            Debug.Log (ResponseString);

            Data = JArray.Parse (ResponseString);


        }
        catch(JsonReaderException e)
        {
            Data = JArray.Parse ("[" + ResponseString + "]");
        }

        if(Data.Contains ("errors"))
        {
            ValidationErrors = (JArray) Data["errors"];
        }


        Debug.Log (Data[1]);

    }

}

public bool HasErrors()
{
    if(ErrorMessage != null) 
    {
        return true;
    }
    else return false;
}



}

正如您所看到的,我正在调试器中记录字符串,它向我显示完整的响应字符串,验证它在此类中是否正常工作。但是,当从其他任何地方调用变量时,它返回一个空字符串。我花了两个小时谷歌搜索,并希望其他人之前偶然发现了这个问题,但我找不到任何东西。

以下是尝试访问字符串的事件处理程序:

public void OnGetAllResource(WebResponseEventArgs e)
{

    //Check for errors

    if(e.HasErrors())
    {
        Debug.Log (e.ErrorMessage);
        return;
    }

    //Debug.Log (r);

    //Test our resource inherited class

    else
    {

        //string string2 = Shift.Instance.getAll ();


        //string string3 = Shift.Instance.getAll ();

        //Start composing our list

        Debug.Log (e.Test);

        Debug.Log (e.ResponseString);

Debug.Log(e.Test)工作正常,Debug.Log(e.ResponseString)返回一个空字符串。

我希望有人可以帮助我,这让我头疼不已:)

0 个答案:

没有答案