J'ai la structure suivante et j'aimerais trouver une solution qui permette de bénéficier des deux classes suivantes. La première classe utilise des chaînes et des membres fortement typés :
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
}
Je peux imaginer une alternative qui serait une Get
y Set
avec une méthode enum
paramètre. Voici la deuxième classe :
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); }
}
Mais le côté consommateur de la classe 2 n'est pas beau à voir :UserSessionData.Get(UserSessionData.What.CustomerNumber)
Comparez-la à la première classe : UserSessionData.CustomerNumber
Existe-t-il un moyen fortement typé d'appeler les méthodes Get et Set dans mon exemple de première classe ? En d'autres termes : Comment puis-je bénéficier des avantages des deux classes, à savoir la maintenabilité des membres fortement typés et une syntaxe attrayante ?