Преобразование класса шаблона репозитория из c # в vb.net

1

У меня был следующий код С#:

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" не принимает это число аргументов

Любая идея, как исправить это?

  • 0
    Что такое _dbSet ? Это реализует IQueryable(Of T) ?
Теги:
entity-framework
dbcontext

2 ответа

1

Я не могу вспомнить причину с моей точки зрения, но в этих случаях это часто будет работать, просто отбросив общий метод в вызове метода:

Public Function Single(ByVal where As Expression(Of Func(Of T, Boolean))) As T
        Return _dbset.Single(where)
End Function
1

По какой-то причине компилятор не может привязываться к правильному статическому методу - возможно, потому, что он не знает, хотите ли вы 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
  • 0
    Приветствия сделают это, когда я вернусь на машину разработчика, синтаксис убивает меня в vb.net нужно больше практики лол

Ещё вопросы

Сообщество Overcoder
Наверх
Меню