2015-10-15 1 views
-1

Я ищу способ хранения объектов класса с указанными свойствами, а затем их прочитать. Это подход, который я пришел с:Самый удобный способ хранения, определения и чтения объектов класса?

internal class Zones 
{ 
    public Dictionary<string, Zone> zoneData = new Dictionary<string, Zone>() 
    { 
     { "Something", new Zone() } 
    }; 

    public Zone Load(string zoneName) 
    { 
     return zoneData[zoneName]; 
    } 
} 

internal class Zone 
{ 
    public uint id; 
    public string name; 
} 

Тогда читайте:

Zone z = Zones.Load("Something"); 
// z.id, z.name 

Но есть проблема. Я хочу иметь возможность уже иметь несколько классов Zone внутри этого словаря zoneData со свойствами, которые я указал.

Я думал о парах вариантов. Когда запускается основной класс, определите новый и zoneData.add(new Zone([Properties])). Или непосредственно, как я показал на примере, но я должен был бы определить их снаружи, а затем просто добавить ссылку.

Опять же, к этой идее все вместе, какой был бы лучший подход? Спасибо!

+2

Это не ясно, что вы пытаетесь сделать, но это звучит, как вы пытаетесь изобрести колесо здесь. Вы хотите динамически загружать классы во время выполнения? Если да, загляните в размышления. Вы пытаетесь сохранить данные и структуру классов? Если да, просмотрите сериализацию. – Tim

+0

Хорошо, может быть, я не был достаточно ясен, но в основном, что было бы лучшим способом сохранить класс зоны внутри словаря прямо. Без необходимости добавлять() те, которые находятся в начале выполнения? – user2818626

+0

, вы можете сохранить их с помощью Serialization, а затем прочитать их при запуске. –

ответ

1

вам нужен конструктор для класса зон, что создает классы и помещает их в словарь

Dictionary<string, Zone> m_dict = new ....; 
public Zones() 
{ 
    m_dict.Add("zone1", new Zone{id = 42, name = "foo"}); 
    m_dict.Add("zone2", new Zone{id = 43, name = "bar"}); 
.... 
} 
Смежные вопросы