В моем текущем проекте я создавал хранилище, где он состоит из словаря, в котором вы можете установить несколько объектов с именем Foo на уровень (легкий, средний и сложный). И.Е.
- Уровень Easy: Объект Foo1, объект Foo2, объект Foo3
- Средний уровень: Объект Foo4
- Уровень сложности: Объект Foo5, объект Foo6
А это мой репозиторий:
public interface IFoosRepository
{
void AddFooLevel(Levels level, Foo foo);
void RemoveFooLevel(Levels level);
Foo GetProblemFoo(Levels level);
IEnumerable<Levels> GetFooLevels();
IEnumerable<Foo> GetFoos();
}
public class FoosRepository : IFoosRepository
{
private IFoosService service;
private Dictionary<Levels, Foo> _fooLevels = new Dictionary<Levels, Foo>();
public FoosRepository()
: this(new FoosService())
{
}
public FoosRepository(IFoosService service)
{
this.service = service;
// Loads data into the _fooLevels
// ...
}
public void AddFooLevel(Levels level, Foo foo)
{
_FooLevels.Add(level, foo);
}
public void RemoveFooLevel(Levels level)
{
_FooLevels.Remove(level);
}
public Foo GetProblemFoo(Levels level)
{
return _FooLevels[level];
}
public IEnumerable<Levels> GetFooLevels()
{
return _FooLevels.Keys;
}
public IEnumerable<Foo> GetFoos()
{
return _FooLevels.Values;
}
}
Затем я понял еще одну вещь: мне нужно иметь уникальный идентификатор, такой как имя для объектов foos. И.Е. если я хочу получить определенный объект с уровня, мне нужно установить имя, чтобы получить его.
Теперь объекты будут такими:
- Уровень Easy: [имя: foo1, объект Foo1], [имя: foo2, объект Foo2], [имя: foo3, объект Foo3]
- Средний уровень: [имя: foo4, объект Foo4]
- Уровень сложности: [имя: foo5, объект Foo5], [имя: foo7, объект Foo6]
Я имею в виду, что каждое имя сопровождается уникальным именем, и я думаю, будет лучше, если это имя больше не повторяется.
И вот тут я начинаю сомневаться в своем первом дизайне. Сначала я назвал IDictionary>, или, может быть, мне нужно было включить этот идентификатор в атрибут Foo, но, думаю, это не лучшее решение.
Что я должен изменить, чтобы реализовать эту новую функцию?