が好きな私はそれは非常に実用的見つけるので、私は 、他の人たちによって以前に行われた、ここでいくつかのコードをリファクタリングしようとしている、一般的な方法にここでは一例ですデザインの質問
protected void SetParameterValue(SqlParameter parameter, string parameterValue, bool isNullable)
{
if ((null == parameterValue || parameterValue == NULL_STRING) && isNullable)
parameter.Value = DBNull.Value;
else parameter.Value = parameterValue;
}
protected void SetParameterValue(SqlParameter parameter, int parameterValue, bool isNullable)
{
if (parameterValue == NULL_INT && isNullable)
parameter.Value = DBNull.Value;
else parameter.Value = parameterValue;
}
protected void SetParameterValue(SqlParameter parameter, Int64 parameterValue, bool isNullable)
{
if (parameterValue == NULL_LONG && isNullable)
parameter.Value = DBNull.Value;
else parameter.Value = parameterValue;
}
のメソッドオーバーロードの多くを変換しますそれらは、もっとたくさんあります。今私は新しいタイプ(まだそれのための方法を持っていない)を受け入れるものを作成する必要があり、多分私は少しきれいにすることができる、これをより良くすることを決めた。 私の考えは、しかし、私は最善のアプローチだかわからない、私はこのジェネリックメソッドの内部で何をカプセル化することができますし、私も別の方法で何をすべきかが必要になります
protected void SetParameterValue<T>(SqlParameter parameter, T parameterValue, bool isNullable)
のようなものを作成することです。その価値はありますか?または "たくさんのメソッド"のアプローチは良いですか?私は一般的なものから何を得るでしょうか?ありがとう!
極端な@Alex – msarchet
Nullable型が利用できるようになったので、それらのNULL_INT、NULL_LONGなどの定数を削除し、代わりにデータ型として 'int?'、 'long?'を使用することをお勧めします。 – Heinzi
NULL_INTなどの場所がたくさんあるという問題があります。たくさんのコードを変更しなくてもすばやくリファクタリングを行いたいのですが(多くの再テスト) –