使用C#中的函数创建新对象并存储它

时间:2015-12-19 16:11:27

标签: c#

我有这个程序,它允许从它启动游戏,用户可以将自己的游戏/ exe添加到程序中,并指定名称和游戏的路径,以便它可以启动。到目前为止,这是我的代码,没有将游戏添加到程序的设置中:

using System.Windows.Forms;

namespace Games_Manager
{
    public class game
    {
        public string Name;
        public string Path;
        public game(string name, string path)
        {
            Name = name;
            Path = path;
        }
    }

    public partial class main_Win : Form
    {
        public main_Win()
        {
            InitializeComponent();
        }

        public void addGame(string gameName, string gamePath)
        {
            //Code to add a game to a list, how can I store the game lists 
            //so the user doesn't have to re-enter games every time 
            //the application runs and rather read the list every time.
        }
    }
}

我想创建一个函数,当被调用时,通过输入的名称创建一个新的游戏对象并存储游戏的名称和路径。我该如何做到这一点?

2 个答案:

答案 0 :(得分:3)

问题。你的游戏存储在哪里?如果您想将它们存储在表单中,请尝试以下操作:

using System.Windows.Forms;

namespace Games_Manager
{
    public class Game
    {
        public string Name;
        public string Path;
        public Game(string name, string path)
        {
            Name = name;
            Path = path;
        }
    }

    public partial class MainWin : Form
    {
        List<Game> games;  //here is where the games will be stored
        public MainWin()
        {
            InitializeComponent();
            games = new List<Game>(); //here the list is initialized
        }

        public void AddGame(string gameName, string gamePath)
        {
            games.Add(new Game(gameName, gamePath)); //add a game to the list
        }
    }
}

PS。我对标准C# naming convention使用了类和变量名。适用于类和变量的小写。

编辑1

以下是一些非常基本的代码,用于在Xml文件中保留游戏列表。要求Game具有无参数构造函数,并且它具有名称,路径等的读/写属性。

    private bool ReadGamesList(string path)
    {
        if (File.Exists(path))
        {                
            XmlSerializer xml=new XmlSerializer(typeof(Game[]));
            var fs=File.Open(path, FileMode.OpenOrCreate, FileAccess.Read);
            games=new List<Game>((Game[])xml.Deserialize(fs));
            fs.Close();
            return true;
        }
        return false;
    }

    private bool SaveGamesList(string path)
    {
        if (games.Count==0) return false;
        XmlSerializer xml=new XmlSerializer(typeof(Game[]));
        var fs=File.Open(path, FileMode.Create, FileAccess.Write);
        xml.Serialize(fs, games.ToArray());
        fs.Close();
        return true;
    }

答案 1 :(得分:0)

可能是我误解了你。 您可以使用构造函数创建游戏,例如:

var g = new game("packman", "c:\folder\packman.exe");

如果你想拥有一个工厂方法,你可以将它设为静态,并从那里调用一个构造函数:

var g = game.Create("packman", "c:\folder\packman.exe");