2013-02-27 41 views
0

如何使下面的DoScrape方法添加到外部CompanyInfo變量,然後在button1_Click的循環中訪問該列表以寫入文本文件?C#全局類 - 從方法中添加並從另一箇中讀取

namespace Test1 
{ 
public partial class Form1 : Form 
{ 

    public class LocationNameAndLink 
    { 
     public string Link { get; set; } 
     public string Name { get; set; } 
    } 

LocationNameAndLink CompanyInfo = new List<LocationNameAndLink>(); 

private void button1_Click(object sender, EventArgs e) 
{ 
     Parallel.ForEach(Brands, item => 
     { 
      string initialSiteName = "http://www.site1.com/" + Brands; 
      DoScrape(initialSiteName); 
     }); 


     StreamWriter sw03 = new StreamWriter("websiteCompanyDetails.txt"); 
     foreach (var item in CompanyInfo) 
     { 
      sw03.WriteLine("\"" + item.Name + "\",\"" + item.Link + "\"" ); 
     } 
} 

public static void DoScrape(string PageLink) 
{ 
    string SiteLink; 
    string SiteName; 
    SourceCode = WorkerClass.getSourceCode(nextPageLink); 
    SiteLink = SourceCode.Substring(0, 50); 
    SiteName = SourceCode.Substring(51, 50); 
    CompanyInfo.Add(new LocationNameAndLink 
        { 
         Name = SiteName, 
         Link = SiteLink 
        }); 
       } 
    } 

回答

2

你需要讓DoScrape實例方法,而不是靜態方法

靜態方法不是特定的類型的任何特定實例,因此它沒有隱式this參考 - 而貴CompanyInfo字段是一個實例變量 - 的Form1每個實例都有一個單獨的變量。

有關static含義的更多信息,請參閱MSDN - 這是理解一個重要的概念。

+0

resharper再次襲擊? – paul 2013-02-27 14:13:12

+0

@paul - 有什麼reshalper做這件事? – 2013-02-27 14:13:47

+0

抱歉,必須隱藏原始代碼,但DoScrape是遞歸方法。這是否改變了答案? – 2013-02-27 14:14:06

相關問題