datarowextensionメソッドを使用してデータ行から列値を読み取るジェネリックメソッドを作成しようとしました。
public static Nullable<T> SafeRead<T>(DataRow row, string fieldName) where T : struct
{
if (row.HasColumn(fieldName))
{
return row.Field<Nullable<T>>(fieldName) ?? default(Nullable<T>);
}
else
return default(Nullable<T>);
}
public static T SafeRead<T>(DataRow row, string fieldName) where T : class
{
if (row.HasColumn(fieldName))
{
return row.Field<T>(fieldName) ?? default(T);
}
else
return default(T);
}
コードからこの関数を呼び出すと、コンパイラは2つの呼び出しの間にあいまいな参照があると文句を言います。これは、メソッドのシグネチャを見ると明らかです。ただし、別のメソッドを使用せずにこれを処理する方法がわかりません。