1

我正在将一个类从 Windows 窗体应用程序导航到 Windows 商店应用程序。我从互联网上获得的课程如下所示,

    public class ElementList : CollectionBase
{
    /// <summary>
    /// A Collection of Element Nodes
    /// </summary>      
    public ElementList() 
    {           
    }

    public void Add(Node e) 
    {
        // can't add a empty node, so return immediately
        // Some people tried dthis which caused an error
        if (e == null)
            return;

        this.List.Add(e);
    }

    // Method implementation from the CollectionBase class
    public void Remove(int index)
    {
        if (index > Count - 1 || index < 0) 
        {
            // Handle the error that occurs if the valid page index is       
            // not supplied.    
            // This exception will be written to the calling function             
            throw new Exception("Index out of bounds");            
        }        
        List.RemoveAt(index);           
    }

    public void Remove(Element e)
    {           
        List.Remove(e);         
    }

    public Element Item(int index) 
    {
        return (Element) this.List[index];
    }


}

在上述类中,商店应用程序不接受 CollectionBase。请告诉我一种将其导航到 Windows 8 商店应用程序的方法。. .

提前致谢!

4

4 回答 4

2

你不需要使用

    IList 

相反,您可以使用

    List<Object>. . .

试一试。. .

它对我有用可能对你也有用..

于 2012-12-24T11:57:36.410 回答
1

您应该在 WinRT 中使用System.Collections.ObjectModelSystem.Collections.Generic

CollectionBase已过时,您应该避免使用它。

于 2012-11-10T06:41:57.813 回答
1

我想我其实想通了,CollectionBase继承自IList,所以我重写代码如下,

    public class ElementList
{
    public IList List { get; }
    public int Count { get; }


    public ElementList()
    {

    }

    public void Add(Node e)
    {
        if (e == null)
        {
            return;
        }

        this.List.Add(e);
    }

    public void Remove(int index)
    {
        if (index > Count - 1 || index < 0)
        {
            throw new Exception("Index out of bounds");
        }
        List.RemoveAt(index);           
    }

    public void Remove(Element e)
    {
        List.Remove(e);
    }

    public Element Item(int index)
    {
        return (Element)this.List[index];
    }

}
于 2012-11-10T11:38:00.760 回答
0

作为替代方案,您始终可以编写自己的CollectionBase做同样的事情。

于 2012-11-10T12:18:59.133 回答