Существует несколько опций, которые вы можете попробовать.
Опция 1: Объект должен динамически хранить значения свойств.
public GetMemberByName(MyObject myobj, string name)
{
return myobj.GetProperty(name);
}
public class MyObject
{
private Dictionary<string, object> m_Properties = new Dictionary<string, object>();
public object GetProperty(string name)
{
return m_Properties[name];
}
public void SetProperty(string name, object value)
{
m_Properties[name] = value;
}
public object Prop1
{
get { return GetProperty("PropOne"); }
set { SetProperty("PropOne", value); }
}
public object Prop2
{
get { return GetProperty("PropTwo"); }
set { SetProperty("PropTwo", value); }
}
}
Опция 2: Используйте отражение.
public GetMemberByName(MyObject myobj, string name)
{
return typeof(MyObject).GetProperty(name).GetValue(obj, null);
}
Вариант 3: Оставьте все как есть.
Это разумный вариант, потому что операторы switch для строковых типов данныхбудет преобразован в поиск Dictionary
, когда операторы регистра чисел достигнут определенного порога.Этот порог равен 7 на компиляторе C # 3.0.Таким образом, поиск будет O (1), независимо от того, сколько существует операторов case.Он не будет сканировать каждый из них.