我想用C#写一个购物车的页,想创建一个购物车的模型类;
类大概是这样的,有一个Shoppings类(购物车组类)
在Shoppings类里再写一个Shopping类(购物车类)
在写Shoppings类的索引访问器类时出现了问题,问题如下:
 可访问性不一致: 索引器返回类型“shoppingApplication.Shoppings.Shopping”比索引器“shoppingApplication.Shoppings.this[int]”的访问性低源码如下:
using System;namespace shoppingApplication
{
public class Shoppings
{
class Shopping
{
public static int shoppingCount=0;
private string shoppingName;
private int shoppingId;
private string articleName;
private double articlePrice;
Shopping()
{
this.shoppingName="";
this.shoppingid=Shopping.shoppingCount++;
this.articleName="";
this.articlePrice=0.0;
}
Shopping(string shoppingName)
{
this.shoppingName=shoppingName;
this.shoppingid=Shopping.shoppingCount++;
this.articleName="";
this.articlePrice=0.0;
}
Shopping(string shoppingName,string articleName,double articlePrice)
{
this.shoppingName=shoppingName;
this.shoppingid=Shopping.shoppingCount++;
this.articleName=articleName;
this.articlePrice=articlePrice;
}
public string ShoppingName
{
set
{
this.shoppingName=value;
}
get
{
return this.shoppingName;
}
}
public int ShoppingID
{
set
{
this.shoppingId=value;
}
get
{
return this.shoppingId;
}
}
public string ArticleName
{
set
{
this.articleName=value;
}
get
{
return this.articleName;
}
}
public double ArticlePrice
{
set
{
this.articlePrice=value;
}
get
{
return this.articlePrice;
}
}
} private Shopping[] listShoppings;
public Shoppings()
{
this.listShoppings=new Array[10];
}
public Shoppings(int index)
{
this.listShoppings=new Array[index];
}
public Shopping this [int index]
{
set
{
if(index>=0 || index<Shopping.shoppingCount)
this.listShoppings[index]=value;
}
get
{
if(index>=0 || index<Shopping.shoppingCount)
return this.listShoppings[index];
else
return new Shopping();
}
}

}
}
我也不知道我这样写购物车的模型思想好不好,如果哪位朋友能提供很好的思想。本人一定再加50分奉送(最好有源码贴出)。

解决方案 »

  1.   

    namespace shoppingApplication
    {
    public class Shoppings
    {
    class Shopping
    {
    public static int shoppingCount=0;
    private string shoppingName;
    private int shoppingId;
    private string articleName;
    private double articlePrice;
    public Shopping()
    {
    this.shoppingName="";
    this.shoppingId=Shopping.shoppingCount++;
    this.articleName="";
    this.articlePrice=0.0;
    }
    Shopping(string shoppingName)
    {
    this.shoppingName=shoppingName;
    this.shoppingId=Shopping.shoppingCount++;
    this.articleName="";
    this.articlePrice=0.0;
    }
    Shopping(string shoppingName,string articleName,double articlePrice)
    {
    this.shoppingName=shoppingName;
    this.shoppingId=Shopping.shoppingCount++;
    this.articleName=articleName;
    this.articlePrice=articlePrice;
    }
    public string ShoppingName
    {
    set
    {
    this.shoppingName=value;
    }
    get
    {
    return this.shoppingName;
    }
    }
    public int ShoppingID
    {
    set
    {
    this.shoppingId=value;
    }
    get
    {
    return this.shoppingId;
    }
    }
    public string ArticleName
    {
    set
    {
    this.articleName=value;
    }
    get
    {
    return this.articleName;
    }
    }
    public double ArticlePrice
    {
    set
    {
    this.articlePrice=value;
    }
    get
    {
    return this.articlePrice;
    }
    }
    } private Shopping[] listShoppings;
    public Shoppings()
    {
    this.listShoppings=new Shopping[10];
    }
    public Shoppings(int index)
    {
    this.listShoppings=new Shopping[index];
    }
    private Shopping this [int index]
    {
    set
    {
    if(index>=0 || index<Shopping.shoppingCount)
    this.listShoppings[index]=value;
    }
    get
    {
    if(index>=0 || index<Shopping.shoppingCount)
    return this.listShoppings[index];
    else
    return new Shopping();
    }
    } }
    }
      

  2.   

    上面的代码不知道满不满意(无方运行请提出问题)因为Shopping 是一个内部类
    外部是无法访问的,所以索引无法返回一个Shopping类型的对象
    我觉得应该把shopping类写在外面,如果你在外部要直接使用这个类的话
      

  3.   

    试试TDD吧,先考虑你想如何使用再谈实现,感觉思路顺畅得多
      

  4.   

    我是用uml建模,
    不过本人也在学习中
    希望和大家一块学习学习
      

  5.   

    Shopping应该是Public 上面代码你是做为Shoppings的潜入类写的
      

  6.   

    我看了一下.net里自带的的一个网上书店销售系统,上面在模型方面就分成二块,一个是模型层,一个是模型操作层这类意义的吧。逻辑也分成了两块,一个是外观层,一个是规则层,哦对了最底层还有一个框架层,不过有点可惜它的模型层不是最终模型,继承了一个DataSet所以也不是很好的关于了解模型设计思想,就比如说一个书集合中的添和移除这些方面的设计。
    我看了C#的书好像没有看到动态分配内存的知识,不过可以动态的改变数组的大小来实现数组已满还能添加数据。不过这样的话是不是比较慢了。