2011-02-24 50 views
-1

我有以下類:當實現IList <T>的類需要我實現Count屬性時該怎麼辦?

public class GraphingResults : IList<GraphingResult> 
{ 
    public List<GraphingResult> ToolkitResultList { get; set; } 

    public GraphingResults() 
    { 
     this.ToolkitResultList = new List<GraphingResult>(); 
    } 

    // bunch of other stuff 
} 

由於這個類實現IList<GraphingResult>,它要求我執行下列財產

public int Count 
{ 
    get { throw new NotImplementedException(); } 
} 

我不知道到底該怎麼(以及許多其他!)做...我是否需要返回this.ToolkitResultList的計數?

+1

你爲什麼要麻煩執行'IList'?爲什麼不公開你的'List'作爲一個屬性?這不像'IList'阻止修改,所以不知道這是什麼意思。 – 2011-02-24 17:16:47

回答

3

爲了向您提出問題,您爲什麼要公開公開公開列表以及實施IList?

答案是你應該做一個或另一個。也就是說,無論是公開揭露列表,你正在做的,和不實現IList,或不公開名單,並insteads讓你的類接口到該列表:

public class GraphingResults : IList<GraphingResult> 
{ 
    private List<GraphingResult> ToolkitResultList { get; set; } 

    public GraphingResults() 
    { 
     this.ToolkitResultList = new List<GraphingResult>(); 
    } 

    // bunch of other stuff 

    public int Count 
    { 
     get { return this.ToolkitResultList.Count; } 
    } 

} 
+1

爲了包裝現有的List,我仍然沒有看到實現'IList'的價值。這是很多工作/樣板 - 可能會有什麼好處? – 2011-02-24 17:20:34

+1

@Kirk - 我完全同意,但因爲我不知道OP的意圖,我不能說什麼可能會有一些好處。一種可能性可能是創建一個可觀察的列表,當從基礎列表中添加/刪除項目時會引發事件。 – Jamiec 2011-02-24 17:23:29

0

是的,如果這個類實際上只是一個圍繞ToolkitResultList的包裝,那麼這對我最有意義。

+1

這不是一個包裝,因爲它是公開曝光的。 – jason 2011-02-24 17:18:25

0

你的類將充當代理內部使用的列表,但如果這是你的縮進設計,你可能會在基類更改爲收藏:

public class GraphingResults : Collection<GraphingResult> 
{ 
} 

您在System.Collections.ObjectModel命名空間中找到這個類。它可以完成你所有的工作,特別適合你的情況。

相關問題