什么是Windows 8商店应用程序中的c#CollectionBase的替代品?

时间:2012-11-10 05:53:13

标签: c# windows-8 windows-store-apps

我正在将一个类从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 个答案:

答案 0 :(得分:2)

您不需要使用

    IList 

而你可以使用

    List<Object>. . .

试一试。 。

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

答案 1 :(得分:1)

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

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

答案 2 :(得分: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];
    }

}

如果有任何修改或者我做错了什么意思请说!

提前致谢!

答案 3 :(得分:0)

作为替代方案,您始终可以编写自己的CollectionBase来执行相同的操作。