2013-07-09 115 views
0

我試圖使用含有使用該方法調用子類的方法

public List<String> ListJobs(Job job) 
    { 
     List<String> ListJobs = new List<string>(); 

     foreach (Job curjob in Jobs) 
     { 


      String jobAsString = curjob.ToString(); 

      ListJobs.Add(jobAsString); 

     } 
     return ListJobs; 
    //Get the list of strings 

我現在的結構是

JobLedger(在它是列表中的一系列字符串列表全部包含)

然後是由Parent和Pickup繼承的Job Parent類問題是在上面的代碼中,而不是在子類中使用重寫的tostring方法,而是默認使用父類。

public void NewerList() 
     //No Pickup display problem is here. Liststring refers to base sting method instead of child 
    { 


     LstJob.Items.Clear(); 
     //Clears the list 


     List<String> listOfVis = TheLedger.ListJobs(Thejob); 
     //Get a list of strings to display in the list box 


     LstJob.Items.AddRange(listOfVis.ToArray()); 


    } 

我似乎已經把範圍縮小到這片代碼EHRE的,列表調用父作業類,而不是要麼子類的

+0

什麼是喬布斯?我只能看到ListJobs的定義。 –

+0

「Jobs」聲明在哪裏?爲什麼'job'沒有被使用?順便說一句:'Jobs.Select(job => job.ToString())。ToList()'類似,但看起來更短。 – Dennis

+0

您確實需要對變量的名稱進行排序等等。ListJobs是一種類型,但您正在使用ListJobs作爲變量的名稱。變量實際上應該以小寫字母開頭,除非它是一個常量,在這種情況下,所有大寫字母由_ –

回答

0

確保你真的覆蓋ToString

你所描述的聽起來更像你自己shadowing它在派生類中。

override(你想要的):

public override string ToString() 
{ 
    // ... 
} 

影子(我覺得你有什麼):

public string ToString() 
{ 
    // ... 
} 

// or: 

public new string ToString() 
{ 
    // ... 
} 
+0

我已經在每種情況下重寫了tostring方法。主要問題是listjobs方法正在調用父Job Class中的Tostring,而不是預期的子類 –

+0

@DenisAllan:但這正是多態性應該爲您制定的。請顯示一些代碼,讓我們重現您的問題。 –

+0

'public void NewerList() //無Pickup顯示問題在這裏。列表字符串指的是基礎sting方法而不是子 LstJob.Items.Clear(); //清除列表 列表 listOfVis = TheLedger.ListJobs(Thejob); //獲取要在列表框中顯示的字符串列表 LstJob.Items.AddRange(listOfVis.ToArray()); }' 這是我編寫的代碼,'List '方法調用父'job'類中的基礎'tostring()'。對不起,如果我的格式不好。 –

0

您需要overrided方法之前使用override

+0

對不起,我改正了。它應該是'覆蓋' – sarwar026

+0

好。只是你知道:我沒有downvote,所以我不能刪除你已經得到的-1。 –

+0

@DanielHilgarth:沒問題。如果這不是正確的答案,我會在幾分鐘後刪除它:) – sarwar026

1

嘗試類型將您正在獲取的對象轉換爲包含您要使用的函數的類。

+0

這應該是一個評論 – DGibbs

+0

@DGibbs,你可以看到我沒有要求的聲望留言對我沒有發表的評論。我是新來的 – Dave

+0

歡迎來到SO!考慮閱讀[this](http://stackoverflow.com/help/how-to-answer)。如果你不能提供正確的答案,那麼你根本不應該回答。 – DGibbs