C# 如何使用字典(multiton模式)创建具有唯一值的列表

C# 如何使用字典(multiton模式)创建具有唯一值的列表,c#,list,design-patterns,dictionary,multiton,C#,List,Design Patterns,Dictionary,Multiton,我需要制作一个只包含唯一值的杂志列表,并使用字典和multiton模式。列表中不能有两个名称和价格相同的对象。 我在c中只找到了一个multiton模式的例子,但它并没有解决我的问题。这是我已经拥有的代码的简化版本,但这些是这个问题中最重要的东西 public class Product { string name; int price; } public class Coffee : Product { public Coffee(string _name, int _pr

我需要制作一个只包含唯一值的杂志列表,并使用字典和multiton模式。列表中不能有两个名称和价格相同的对象。 我在c中只找到了一个multiton模式的例子,但它并没有解决我的问题。这是我已经拥有的代码的简化版本,但这些是这个问题中最重要的东西

public class Product
{
  string name;
  int price;
}

public class Coffee : Product 
{
    public Coffee(string _name, int _price)
    {
      name = _name;
      price = _price;
    }
}

public class Tea : Product 
{
    public Tea(string _name, int _price)
    {
      name = _name;
      price = _price;
    }
}

public class Magazine
{
    List<Product> magazine_list;

    public Magazine()
    {
      List<Product> magazine_list = new List<Product>();
    }

    public void add(Product p)
    {
      magazine_list.Add(p);
    }

}

为什么不把杂志做成字典,关键是产品名称

public class Magazine : Dictionary<string, Product>
{
   public void Add(Product p)
   {
      base[p.name] = p;
   }
}

您可以使用一个自定义类,它包含一个字符串标识符和一个哈希集。默认情况下,哈希集将确保唯一性。

@MitchWheat您所实现的与您链接到的wiki中所描述的完全不同!你有什么问题?您不知道如何使密钥在名称和价格上都是唯一的吗?这是一种方式:@AaronLS问题不在于我不知道如何让它独一无二。主要问题是,我需要使其独特的使用多通设计模式,它的学校@user3308470好的,您知道如何使其唯一,这样就解决了:List不能有两个名称和价格都相同的对象。。然后你说在c语言中只找到了一个multiton模式的例子,它并没有解决我的问题。你有什么问题?您知道如何使字典唯一,您有一个multiton模式的实现。看来你把所有的东西都弄到手了。我已经读了你的问题好几次了,但你没有弄清楚你在哪里遇到了问题。那么它能被称为多通模式吗?问题是我必须用9-10个精确的模式做这个项目,包括multiton。哦!这似乎是一个学术问题。不要试图去适应一个不适合的模式,而是尝试去修改这个模式实际适合的问题空间。例如,将产品名称和价格设置为唯一是没有意义的。你应该简化它,让你的产品有一个唯一的标识符。但它仍然是多通设计模式吗?主要的问题是,我需要用这种设计模式来做,这是为学校设计的……嗯,如果你制作一个地图,其中你的multiton是另一个类,你可以确保用户无法访问它,并且地图中的每个键都是唯一的,那么如果需要multiton样式,这将比哈希集更适合它