创建字典<string,class>

Wib*_*ble 2 .net c# dictionary

在使用Unity的C#中,我正在尝试创建一个类的字典.

所有类都继承自具有许多虚方法的基类(构建脚本)

我已经设置了我的词典:

Dictionary<string, BuildingScript> buildingScripts = new Dictionary<string, BuildingScript>();
Run Code Online (Sandbox Code Playgroud)

我正试图添加到词典中:

buildingScripts.Add("Farm", FarmScript);
buildingScripts.Add("Hunter", HunterScript);
buildingScripts.Add("Fisher", FisherScript);
Run Code Online (Sandbox Code Playgroud)

编译器正在重新认识继承,所以我想弄清楚我错过了什么.

错误消息是:

  • 错误CS0119:表达式表示type', where a变量', value' or方法组'是预期的
  • 'System.Collections.Generic.Dictionary.Add(string,BuildingScript)'的最佳重载方法匹配有一些无效的参数
  • 参数#2' cannot convert对象'表达式以输入'BuildingScript'

And*_*yev 6

你的字典已经被宣布为Dictionary<string, BuildingScript>,所以它的价值应该是一个实例BuildingScript.

考虑差异:FarmScript本身是类型,但是new FarmScript()该类型的实例.

所以你的代码应该是这样的:

buildingScripts.Add("Farm", new FarmScript());
buildingScripts.Add("Hunter", new HunterScript());
buildingScripts.Add("Fisher", new FisherScript());
Run Code Online (Sandbox Code Playgroud)