【发布时间】:2014-06-28 17:52:32
【问题描述】:
我在 Unity3D Q&A 上问过类似的问题,但没有得到回复。我终于回到了这个项目,但仍然遇到同样的问题。
我已经搜索过了,但我认为我没有找到正确的关键字,因为我仍然没有找到合适的答案。无论如何,我会以不同的方式提出问题,希望有人能指出我正确的方向。
所以下面是我想出的代码,它不是游戏中的实际代码,但它很好地展示了我的问题。
基本上,在 build() 方法中,我想检查两个列表是否都包含相同类型的工具,而无需实际对类型进行硬编码。我不关心具体的工具实例,只关心它是某种类型。目的是我可以创建新工具,而无需修改构建方法来合并这些新类型。
如果有更好的方法,我会全力以赴。
谢谢
namespace TypeExample
{
class Tool
{
}
class Spanner : Tool
{
}
class Wrench : Tool
{
}
class Builder
{
List<Tool> toolsAvailable = new List<Tool>();
List<Tool> toolsRequired = new List<Tool>();
public Builder()
{
Spanner spanner = new Spanner();
Wrench wrench = new Wrench();
toolsRequired.Add(spanner);
toolsRequired.Add(wrench);
}
public void GiveTool(Tool tool)
{
toolsAvailable.Add(tool);
}
public void build()
{
// if true
Console.WriteLine("Building");
// else
Console.WriteLine("I don't have the tools to build!");
}
}
class Program
{
static void Main(string[] args)
{
Spanner spanner = new Spanner();
Wrench wrench = new Wrench();
Builder builder = new Builder();
builder.GiveTool(spanner);
builder.GiveTool(wrench);
builder.build();
Console.ReadLine();
}
}
}
【问题讨论】: