У меня был следующий код С#:
public T Single(Expression<Func<T, bool>> where)
{
return _dbset.Single<T>(where);
}
Я попытался преобразовать это в vb.net с помощью инструмента преобразования, который отобразил код следующим образом:
Public Function [Single](where As Expression(Of Func(Of T, Boolean))) As T
Return _dbset.[Single](Of T)(where)
End Function
Это вызывает ошибку "Ошибка перегрузки", потому что ни один доступный "Single" не принимает это число аргументов
Любая идея, как исправить это?
Я не могу вспомнить причину с моей точки зрения, но в этих случаях это часто будет работать, просто отбросив общий метод в вызове метода:
Public Function Single(ByVal where As Expression(Of Func(Of T, Boolean))) As T
Return _dbset.Single(where)
End Function
По какой-то причине компилятор не может привязываться к правильному статическому методу - возможно, потому, что он не знает, хотите ли вы Enumerable.Single
или Queryable.Single
. Вы можете обойти это, вызвав метод расширения статически:
Public Function [Single](where As Expression(Of Func(Of T, Boolean))) As T
Return Queryable.Single(Of T)(_dbset, where)
End Function
_dbSet
? Это реализуетIQueryable(Of T)
?