Мне нужно определить класс с внутренним объектом коллекции для хранения различных типов значений (таких как string, int, float, DateTime и bool) с помощью строкового ключа.Я мог бы использовать Hashtable, поскольку он не является строго типизированным классом коллекции, в то время как Dictionary используется для строго типизированных элементов (хотя я мог бы использовать объект для Dictionary).
В этом случае я хотел бы определить свой класси его использование:
public class MyBaseClass<D> {
protected Hashtable ht = new Hashtable();
MyClass public SetValue<T>(string key, T value)
{
ht.Add(key, value);
return this;
}
public abstract D GetObject();
}
// Example of using the base class for data as class Data1
public MyClass<Data1> : MyBaseClass<Data1> {
public Data1 GetObject() {
return new Data1 {
Property1 = ht["key1"] as string,
Property2 = Int.Parse(ht["key2"].ToString())
}
}
В приведенном выше примере я не уверен, что является лучшей коллекцией для хранения моих данных в MyBaseClass?Я прочитал несколько статей о Hashtable.Это устаревшая коллекция, и производительность по сравнению с коллекцией словаря намного ниже.Должен ли я использовать словарь или любую другую коллекцию, доступную в .Net 3.5?