Сценарий: я отслеживаю несколько счетчиков производительности, и CounterDescription [] соотносится с DataSnapshot [] ... где CounterDescription [n] описывает данные, загруженные в DataSnapshot [n].
Я хочу предоставитьпростой в использовании API в C #, который позволит легко и эффективно расширять массивы.
Упрощенный пример (становится все более сложным)
CounterDescription[0] = Humidity;
DataSnapshot[0] = .9;
CounterDescription[1] = Temp;
DataSnapshot[1] = 63;
Обратите внимание, как мое намерение состоит в корреляциимногие Datasnapshots со ссылкой DateTime
и используют смещение данных для ссылки на их значение.Было определено, что это наиболее эффективный способ хранения данных на сервере, и теперь он отразился на следующей структуре:
public class myDataObject {
[DataMember]
public SortedDictionary<DateTime, float[]> Pages { get; set; }
/// <summary>
/// An array that identifies what each position in the array is supposed to be
/// </summary>
[DataMember]
public CounterDescription[] Counters { get; set; }
}
Как будет использоваться myDataObject? :
Я буду часто искать счетчик по имени строки и использовать его позицию, чтобы определить, какое смещение будет сохранено.Я могу использовать собственный метод расширения для перечисления объекта или использовать каркас, если упорядочение гарантировано.
Кроме того, мне нужно будет расширять каждый из этих массивов по мере добавления новых датчиков: (* float[]
и CounterDescription[]
), но все данные, которые уже существуют, должны оставаться в этом относительном смещении.Я не хочу, чтобы сериализованная версия этого объекта путала Temp (смещение 1) с Humidity (смещение 0)
Какие объекты .NET поддерживают это фиксированное упорядочение, расширение и перечисление (и необязательный поиск по строке)?Я предполагаю использовать один из этих объектов ...
Array[] , LinkedList<t>, and List<t>