Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 委托和调用的列表_C#_Asp.net_Delegates_Invoke - Fatal编程技术网

C# 委托和调用的列表

C# 委托和调用的列表,c#,asp.net,delegates,invoke,C#,Asp.net,Delegates,Invoke,我正在ASP.NET中创建一个较小的RPG游戏。在这个游戏中,我有一个项目架构,其中每个项目都有一些方法。例如,所有项目都应该共享一个方法,如“删除”、“检查”“和“使用””。有些项目必须使用诸如“操作”、“计算”等方法进行扩展 到目前为止,我已经创建了以下对象GameActionList: public delegate void MyDelegate(); public class GameActionList { public List<MyDelegate> Ite

我正在ASP.NET中创建一个较小的RPG游戏。在这个游戏中,我有一个项目架构,其中每个项目都有一些方法。例如,所有项目都应该共享一个方法,如“删除”、“检查”“和“使用””。有些项目必须使用诸如“操作”、“计算”等方法进行扩展

到目前为止,我已经创建了以下对象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();
        }
    }
}
这很好,但是。。。我有一些问题

我的问题

我需要一个更通用的游戏操作列表。我需要一个列表,不仅包括空洞,还包括函数。。另外,我需要有参数和无参数两种方法

例如:Drop方法需要一个玩家对象,这样他就可以放下物品。Examine方法需要返回一个描述项目的字符串

另外,我需要一些在初始化GameActionList时不知道的数据:我在调用该方法时首先知道这些数据

所以我有两个问题:

  • 如何扩展GameActionList,使其既可以包含一个空白列表,也可以包含函数列表,并且这两个列表都可以有参数,也可以没有参数。。(这有意义吗??)
  • 在循环的后期,我如何向方法提供一些数据,比如调用时
  • 还有。。。这可能是一个非常愚蠢的方法,所以如果你有更优雅的解决方案。。我已经准备好听了

    非常感谢。。。!
    拉尔斯

    你很可能需要行动,Func代表


    非常感谢您的通知:)我不知道那个功能。。刚刚接受了最后几个问题的正确答案…-)谢谢。。只是研究了它并更新了我的代码-它工作得非常好!现在我要学的就是动态Voke。。哦,好吧!太好了:)谢谢
        public GameActionList Actions 
        { 
            get
            {
                GameActionList actions = new GameActionList();
                actions.Add(this.Drop);
                actions.Add(this.Examine);
                return actions;
            }
        }