わかりました。あまり好きではないコードが少しあります。私はそれを書かず、単にそれを継承したことを考えると、私はそれを少しきれいにすることができたと思います。基本的に、NHibernateで永続化される設定のオブジェクトがあります。データベースに保持している実際の値を含む辞書が含まれていることを除いて、実装の詳細に飽きることはありません。
典型的なプロパティの実装は次のようになります。
public string MyDumbProperty
{
get { return GetStringValue("MyDumbProperty", string.Empty); }
set { SetValue("MyDumbProperty", value);}
}
さて、上記の実装から、返されるタイプ(strings、ints、longs、floatsなど)ごとに個別のGetxxxxメソッドがあり、2番目のパラメーターがデフォルト値であることがおそらく明らかです。私が望んでいるのは、次のようなことができるようにすることです。
public string MyDumbProperty
{
get { return GetValue("MyDumbProperty", string.Empty); }
set { SetValue("MyDumbProperty", value);}
}
これをやりたい理由はいくつかあります。大きな問題は、どのタイプのパラメーターを使用するかに基づいて名前が付けられたメソッドが個人的に嫌いなことです。2つ目は、このがらくたのためのresharperテンプレートを作成したいということです。次に、プロパティの名前とタイプを入力するだけで完了できます(resharperがタイプに適切なデフォルト値を与えることができると想定しています)。
Tを返すジェネリックメソッドGetValueを作成することを考えていましたが、これを実行できるようにジェネリック制約を設定する方法がわかりません。これから返されるタイプはすべて基本タイプ(文字列、intなど)になります。配列を返すものがいくつかありますが、私はそれらに対して常に別のことを行うことができます。これは決して優先度の高い問題ではありませんが、見るたびにイライラします。これを行うにはもっと良い方法があるはずだと思います。
最初のステップは、さまざまなメソッドの名前を変更することだと思います。2番目のパラメーターのデフォルトに渡されるタイプによって異なるため、少なくとも同じ名前に強制することができます。しかし、私はそれよりもうまくやれるでしょうか?使用されているデータ型(すべての数値のTryParse)の点でのみ異なる、各メソッドの反復コードの複数のビットを取り除くことができれば素晴らしいと思います。