コード内でConfigurationPropertyAttribute
という名前を3回繰り返すと、本当に気になります。
プロパティのスペルミスやコピー/貼り付けを忘れて、名前のインスタンスを1つ更新するのは忘れがちです。ConfigurationPropertyAttributeを使用してプロパティ名を3回繰り返さないようにしてください
定数の宣言は、これらの問題の1つのみを解決します。より良い方法がありますか?
私は反射を試みましたが、属性を列挙するのははるかに面倒で醜いようでした。
[ConfigurationProperty("port", DefaultValue = (int)0, IsRequired = false)]
[IntegerValidator(MinValue = 0, MaxValue = 8080, ExcludeRange = false)]
public int Port
{
get
{
return (int)this["port"];
}
set
{
this["port"] = value;
}
}
DRYは単なる原則であり、しばしば実世界では原則が実用的でなければならないことを知っています。しかし誰かがよりクリーンな方法を持っていると確信していますか?
+1:私はそれをやっているその方法を常に無視しています;-)これはまた、(実行時の)より速く、宣言的な方法(これがWCF/System.ServiceModel設定それは_extensive_です - 申し訳ありませんが、私がそれを読んだ場所を覚えていない)。おそらく、それは実際にコードにget/set-propertyを提供するだけで、コレクションにConfigurationPropertyを実際に追加/削除する「忘れる」問題があります。まあ、どちらのアプローチでも、最終的には自分がやっていることを知り、適切な「職人技」を採用しなければならないと思います。 –