データベース内の文字列値の実際の変換値への変換をメモ化するために使用する一般的な方法があります。
public MySpecialValue {
object val;
bool valSet = false;
T GetValue<T> () {
if (!valSet)
{
val = (T)Convert.ChangeType(DatabaseValue, typeof(T));
valSet = true;
}
return (T)val;
}
public string DatabaseValue { get; set; }
}
問題は、初期化中にデータベース内のデータのタイプがわからないことです。この決定を行うことができるのは最初の呼び出しのみです。
キャッシュされている値の型をボックス化解除することを強制されないように構造化する方法はありますか? (包含クラスの署名を変更せずに)