以下是我问题的抽象和简化:
我有一组玩具和相应的盒子。我希望用户能够指定盒子可以容纳的最大玩具类型:
public class Box<T> {}
在Box类中,我希望有一个通用的玩具列表,但是盒子中包含的每个玩具都将具有通用类型:
public class Box<T>
{
public List<Toy> = new List<Toy>();
public bool Whatever;
[member functions, constructors...]
[The member functions will depend on T]
}
Toys类将如下所示:
public class Toy<T> where T : struct //T is any type
{
public List<T> = new List<T>();
public string Name;
public string Color;
[member functions, constructors...]
}
我希望能够创建不同类型的玩具,并将它们插入到指定类型的盒子中。然后,我想要能够将盒子添加在一起,返回一个具有最大类型的盒子。
我真的不知道该如何开始。具有多个类型的通用类列表真的让我感到困惑。我阅读了各种关于使用抽象类或接口的文章,但没有找到任何与我尝试做的事情类似的示例或内容。
如果有人可以提供任何帮助,我将非常感激。
解决方案可以使用C# 4.0。
可能需要进一步澄清:
我希望Toy是通用的,并在实例化时接受参数,因为Toy必须还有一个List作为成员。
Toy内部嵌套的List是我的主要问题。然后,我希望Box内有一个包含Toys的列表,但每个玩具都具有不同类型的构造函数。
更新:
我已经修复了Box to Box这个错误拼写。
更新2:
Toy<plastic> tyPlastic = new Toy<plastic>("Name1", Blue, new plastic[] {0xFFEE00, 0xF34684, 0xAA35B2});
Toy<wood> tyWood = new Toy<wood>("Name2", Grain, new wood[] {a1, f4, h7});
Box<plastic> bxBox = new Box<plastic>();//The Box has the ability to hold both plastic and wood toys. Plastic > Wood > Paper
最终:我最终取消了Box必须是通用的要求。然后,我使用反射来创建动态类型的Toy。谢谢大家。