簡體   English   中英

C#將多個對象保存到文件

[英]C# Saving Multiple Objects to file

因此,基本上,我正在使用C#開發基於控制台的游戲。 我已經准備好保存數據了。 如果可能,我希望將所有數據保存到一個文件中。 不需要像XML序列化之類的東西,玩家可以進去並給自己一百萬美元。

我應該使用什么? 這是我需要序列化的內容:

    GameWorld
    Inventory
    Player
    List<Item>

    Point
    List<String>

這是類中的變量:

    public class GameWorld
    {
        Dictionary<Point, Room>
    }

    public class Item
    {
        String Creator
        String Verb
        String RequiredItem
        Action OnActivate
        int Difficulty
        Action OnDefeatEnemy
        Action OnDefeatedByEnemy 
    }

    public class Room
    {
        String Title
        String Description
        List<Item> Items
        List<String> ItemNames
        String Creator
    }

    public class Inventory
    {
        List<Items>
    }

    public enum ActionType
    {
        ACQUIRE_GOLD, DECREASE_HEALTH, INCREASE_HEALTH, DECREASE_STRENGTH, INCREASE_STRENGTH, GET_ITEM, PRINT_MESSAGE
    }

    public class Action
    {
        ActionType actionType
        int Amount
        String GiveItem
        String Message
        String Creator
        bool SingleActivation
        bool HasActivated
    }

使用二進制序列化會有點模糊。

[雖然它不會阻止使用Reflector的人,但是會在您的代碼和數據文件上戳出一點點]

您可以很容易地將其序列化為xml,然后將其加密,然后再將其保存到文件中。

使用嵌入式對象數據庫(如Db4o或Eloquera),可以更容易地以編程方式管理存儲的對象。

如果您不擔心公開,則可以添加[與某些魔術常數連接的序列化數據]的哈希。 然后,如果黑客想要操縱您的序列化數據,則他們將不得不反匯編程序以查找常量。

如果公開是一個問題,那么我建議使用魔術常數進行“加密”。 這實際上只是內容加擾的一種形式,因為魔術常數是“已知的”(盡管可能很難找到)。

順便說一句,您的問題類似於DRM問題,除非您完全控制客戶端平台,否則這確實無法解決。 http://www.schneier.com/crypto-gram-0105.html#3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM