На данный момент единственный метод, который у меня есть в классе ExntensionUtil, — это называется AddWithNullableValue. Выглядит это так:
Код: Выделить всё
public static void AddWithNullableValue(this SqlParameterCollection paramCollection, string paramName, object value)
{
SqlParameter param = new SqlParameter();
param.ParameterName = paramName;
param.Value = value == null ? DBNull.Value : value;
paramCollection.Add(param);
}
Код: Выделить всё
sqlCommand.Parameters.AddWithNullableValue("@categoryId", publication.CategoryId);
Код: Выделить всё
The call is ambiguous between the following methods or properties:
'App_Code.Util.ExtensionUtil.AddWithNullableValue(System.Data.SqlClient.SqlParameterCollection, string, object)' and
'App_Code.Util.ExtensionUtil.AddWithNullableValue(System.Data.SqlClient.SqlParameterCollection, string, object)'
Изменить:
Когда я удаляю ключевое слово this перед параметром SqlParameterCollection, делая метод обычным статическим методом, а не расширенным, все работает нормально. Более того, я просмотрел все решение (с помощью Ctrl+Shift+F) на предмет всех вхождений ключевого слова AddWithNullableValues, и поиск привел к следующему: сигнатуре метода и двум местам в моем коде, где я его вызываю. Затем я даже создал совершенно новый статический класс, добавил тот же метод с совершенно другим именем и тем же телом, и при его вызове все равно получал ту же ошибку, так что проблема, должно быть, в чем-то другом.
Наконец, мне понадобился еще один метод расширения, и когда я вызвал его в своем коде, я получил ту же ошибку.
Код: Выделить всё
public static Nullable GetNullableValue(this SqlDataReader sqlDataReader, string columnName) where T : struct
{
int columnIndex = sqlDataReader.GetOrdinal(columnName);
Nullable value = null;
if (!sqlDataReader.IsDBNull(columnIndex))
{
value = (Nullable)sqlDataReader.GetValue(columnIndex);
}
return value;
}
Подробнее здесь: https://stackoverflow.com/questions/241 ... y-a-single