私は次の構造を持っており、次の 2 つのクラスの両方の利点を備えたソリューションが必要です。最初のクラスは、文字列と厳密に型指定されたメンバーを使用しています。
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
andSet
メソッドであると想像できenum
ます。2番目のクラスは次のとおりです。
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 メソッドを呼び出す厳密に型指定された方法はありますか? 別の言い方をすれば、両方のクラスの利点、つまり、厳密に型指定されたメンバーの保守性と見栄えの良い構文をどのように活用すればよいでしょうか?