.NET: переключение против словаря для строковых ключей

У меня возникла ситуация, когда у меня есть бизнес-объект с примерно 15 свойствами разных типов. Бизнес-объект также должен реализовывать интерфейс, который имеет следующий метод:

object GetFieldValue(string FieldName);

Я вижу 2 способа реализации этого метода:

Используйте оператор switch:

switch ( FieldName )
{
    case "Field1": return this.Field1;
    case "Field2": return this.Field2;
    // etc.
}

Используйте словарь (SortedDictionary или HashTable?):

return this.AllFields[FieldName];

Что будет более эффективным?

Добавлено: Забыл сказать. Этот метод предназначен для отображения элемента в сетке. Сетка будет иметь столбец для каждого из этих свойств. Обычно будут сетки с более чем 1000 элементов в них. Тот'почему яЯ обеспокоен производительностью.

Добавлено 2:

Вот'Идея: гибридный подход. Создайте статический словарь, в котором ключами будут имена свойств, а значениями - индексы в массиве. Словарь заполняется только один раз, при запуске приложения. Каждый экземпляр объекта имеет массив. Итак, поиск будет выглядеть так:

return this.ValueArray[StaticDictionary[FieldName]];

Алгоритм заполнения словаря может использовать отражение. Затем сами свойства будут реализованы соответствующим образом:

public bool Field1
{
    get
    {
        object o = this.ValueArray[StaticDictionary["Field1"]]; 
        return o == null ? false : (bool)o;
    }
    set
    {
        this.ValueArray[StaticDictionary["Field1"]] = value;
    }
}

Кто-нибудь может увидеть какие-либо проблемы с этим?

Это также может быть сделано на один шаг вперед, и ValueArray / StaticDictionary можно поместить в отдельный универсальный типValueCollection, гдеT указал бы тип для отражения. ValueCollection также будет обрабатывать случай, когда еще не установлено значение. Свойства могут тогда быть написаны просто как:

public bool Field1
{
    get
    {
        return (bool)this.Values["Field1"];
    }
    set
    {
        this.Values["Field1"] = value;
    }
}

И, в конце концов, яЯ снова начинаю задумываться, не может ли простой оператор switch быть быстрее и проще в обслуживании ....

Ответы на вопрос(4)

Ваш ответ на вопрос