Я имею следующую структуру и хотел бы получить решение с двумя преимуществами следующих двух классов. Первый класс использует строки и строго типизированные элементы:
public class UserSessionData
{
private string Get(string key)
{
throw new NotImplementedException("TODO: Get from external source");
}
private void Set(string key, string value)
{
throw new NotImplementedException("TODO: Set in external source");
}
public string CustomerNumber {
get { return Get("CustomerNumber"); }
set { Set("CustomerNumber", value); }
}
public string FirstName {
get { return Get("FirstName"); }
set { Set("FirstName", value); }
}
public string LastName {
get { return Get("LastName"); }
set { Set("LastName", value); }
}
// ... a couple of hundreds of these
}
Я могу представить альтернативу, являющуюся методом Get
и Set
с параметром enum
. Вот второй класс:
public class UserSessionData
{
public enum What {
CustomerNumber, FirstName, LastName, // ...
}
public string Get (What what) { return MyExternalSource(what); }
public string Set (What what, string value) { return MyExternalSource(what); }
}
Но потребительская сторона класса № 2 не очень хороша: UserSessionData.Get(UserSessionData.What.CustomerNumber)
Сравните его с первым классом: UserSessionData.CustomerNumber
Есть ли типичный способ вызова методов Get и Set в моем примере первого класса? С другой стороны: Как получить преимущества обоих классов, т.е. Поддерживаемость строго типизированных членов и симпатичный синтаксис?