我可以在列表中添加接口方法吗?



我刚开始编程,我甚至不知道这是否可能…

我有以下接口:

public interface ISkills
{
int SelfHeal();
int AditionDamage();
int DoubleDamage();
int DefenseMatrix();
}

和以下基类:

class NetNavi : ISkills
{
List<ISkills> skills = new List<ISkills>();

int ISkills.SelfHeal()
{
return 5;
}
int ISkills.AditionDamage()
{
return 5;
}
int ISkills.DoubleDamage()
{
return 5;
}
int ISkills.DefenseMatrix()
{
return 5;
}


public void AddSkills(int chosenSkill)
{
switch(chosenSkill)
{
case 1:
//add SelfHeal to the list
break;
case 2:
//add AditionDamage to the list
break;
case 3:
//add DoubleDamage to the list
break;
case 4:
//add DefenseMatrix to the list
break;
}
}
}

用户被要求选择2种技能。我怎么能把选择的方法添加到我的列表(因为add()不工作…),我怎么能调用列表中的方法呢?

此处:

class NetNavi : ISkills
{
Dictionary<string, Func<int>> skills = new Dictionary<string, Func<int>>();

int SelfHeal()
{
return 5;
}
int AditionDamage()
{
return 5;
}
int DoubleDamage()
{
return 5;
}
int DefenseMatrix()
{
return 5;
}




public void AddSkills(int chosenSkill)
{
switch(chosenSkill)
{
case 1:
Func<int> theFunc = SelfHeal;
skills.Add("SelfHeal", theFunc);
break;
case 2:
Func<int> theFunc = AditionDamage;
skills.Add("AditionDamage", theFunc);
break;
case 3:
Func<int> theFunc = DoubleDamage;
skills.Add("DoubleDamage", theFunc);
break;
case 4:
Func<int> theFunc = DefenseMatrix;
skills.Add("DefenseMatrix", theFunc );
break;
}   
}
}

输入skills["DefenseMatrix"]()(或"DefenseMatrix",而不是skills.Add("key", theFunc);中定义的任何其他键"key"),执行该方法。

如果没有找到匹配的"key",这将引发错误。

可以通过if (skills.ContainsKey("key"))

检查键是否存在如果你实际上只是想确定字符允许哪些方法,不允许哪些方法,你可能会从查看[Flags] enum中受益,似乎[Flags]会是一个更好的方法。

最新更新