我正在ASP.NET中创建一个较小的RPG游戏。在这个游戏中,我有一个物品架构,其中每个物品都有一些方法。例如,所有项目应共享一种方法,例如“删除”,“检查”和“使用”。某些项目将必须使用“ Operate ”,“计算”等方法进行扩展。
到目前为止,我已经创建了以下对象GameActionList:
public delegate void MyDelegate();
public class GameActionList
{
public List<MyDelegate> Items = new List<MyDelegate>();
public void Add(MyDelegate del)
{
Items.Add(del);
}
public void CallDelegates()
{
foreach (MyDelegate myDelegate in Items)
{
myDelegate();
}
}
}
我有一个BaseItem类,该类具有此GameActionList。在BaseItem类中,此方法的get属性如下所示:
public GameActionList Actions
{
get
{
GameActionList actions = new GameActionList();
actions.Add(this.Drop);
actions.Add(this.Examine);
return actions;
}
}
很好,但是...我有一些问题!
我的问题
我需要一种更通用的GameActionList。我不仅需要一个空列表,而且还需要一个函数。.此外,我需要带参数和不带参数的两种方法。
例如: Drop 方法将需要一个Player对象,因此他可以放置该物品。 检查方法将需要返回描述该项目的字符串。
另外,我需要一些在初始化GameActionList时不知道的数据:调用该方法时我首先知道这些数据...
所以我有两个问题:
另外...这可能是一种非常愚蠢的方法,因此,如果您有一些更优雅的解决方案,那么...我很乐意听到它!
非常感谢...!
拉尔斯
最佳答案
您很可能需要Action,Func代表
Func
Action
关于c# - 代表名单和调用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4297453/