Я хочу создать метод, который принимает параметр string, и объект, который я хотел бы вернуть определенному члену на основе param. Итак, самый простой способ - создать оператор switch:
public GetMemberByName(MyObject myobj, string name)
{
switch(name){
case "PropOne": return myobj.prop1;
case "PropTwo": return myobj.prop2;
}
}
Это отлично работает, но я могу завершить довольно большой список... Поэтому мне было любопытно, если бы был способ, не создавая кучу вложенных структур if-else, чтобы выполнить это индексированным образом, чтобы поле сопоставления определяется индексом вместо перехода через переключатель до тех пор, пока не будет найдено совпадение.
Я рассмотрел использование Dictionary<string, something>
, чтобы обеспечить быстрый доступ к сопоставимым строкам (как к элементу ключа), но поскольку я хочу получить доступ к члену переданного объекта, я не уверен, как это может быть сделано.
-
Я стараюсь избегать отражения и т.д., чтобы иметь очень быструю реализацию. Я, скорее всего, буду использовать генерацию кода, поэтому решение не должно быть маленьким/жестким и т.д.
-
Я изначально строил словарь, но каждый объект инициализировал его. Поэтому я начал переводить это на один метод, который может искать значения на основе ключей - оператор switch. Но поскольку я больше не индексирован, я боюсь, что непрерывный поиск, вызывающий этот метод, будет медленным.
-
SO: Я ищу способ комбинировать производительность индексированного/хешированного поиска (например, использование словаря) с возвратом определенных свойств передаваемого объекта. Скорее всего, это статический метод в каждом классе, для которого он используется.