писать mp3-плеер на c #, использовать словарь или массив для метаданных? - PullRequest
1 голос
/ 02 июля 2011

Я пишу mp3-плеер на c #, и мне интересно, как хранить метаданные для быстрого поиска. вот данные, которые мне нужно хранить для каждого отдельного файла:

  • расположение файла
  • имя файла
  • художник
  • альбом
  • название дорожки
  • обложка альбома

как хранить данные? словарь массивов? словарь словарей? Я хочу заполнить список отдельными записями, поэтому если у меня есть кнопка с надписью исполнитель, она быстро получит информацию об исполнителе, поместит ее в массив и заполнит список.

Ответы [ 3 ]

2 голосов
/ 02 июля 2011

Как насчет общего списка ?

// define song object.
public class Song 
{
    public string FileLocation { get; set; }
    public string FileName { get; set; }
    public string Artist { get; set; }
    public string Album { get; set; }
    public string TrackTitle { get; set; }
    public string AlbumArtwork { get; set; }
}

// create list of songs.
List<Song> songs = new List<Song>();

// add new song to list.
songs.Add(new Song {
        FileLocation = "/filepath/sade.mp3",
        FileName = "Sade", 
        Artist = "Sade", 
        Album = "Sade", 
        TrackTitle = "Smooth Operator", 
        AlbumArtwork "TBD"
});

// access first song in list.
Song song = songs[0];

// access property of song.
string trackTitle = song.TrackTitle;

Конечно, вы можете разбить его на еще более объектно-ориентированный дизайн , задав свойства песнисложные объекты, а также.Например:

public class Album
{
    public string Name
    public DateTime ReleaseDate
    public string Artwork { get; set; }
}

public class Artist
{
    public string Name
    public List<Album> Albums
}

public class Song 
{
    public string FileLocation { get; set; }
    public string FileName { get; set; }
    public Artist Artist { get; set; }
    public string TrackTitle { get; set; }
}

А затем, например, получить доступ к свойствам альбома следующим образом:

string firstAlbumName = song.Artist.Albums[0].Name;
1 голос
/ 02 июля 2011

Лучший способ хранить ваши данные в базе данных, есть разные типы небольшой бесплатной базы данных на выбор.Например, sqlite это хорошо.Вы можете использовать sql для быстрого доступа к данным (поиск, группировка и т. Д.).

1 голос
/ 02 июля 2011

Кажется, что там нет ничего, что могло бы повлиять на хранилище, я бы сказал «список классов», то есть List<Track> или аналогичный, с

public class Track {
    public string Path {get;set;}
    ...
    public string Title {get;set;}
    public string ArtworkPath {get;set;}
}

Если томвысокий, вы можете посмотреть на базы данных, а не в памяти.SQL Server (Express или Compact), например, оба бесплатны.Это может позволить более специализированное индексирование без особых усилий, а также предварительно созданное постоянство.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...