ошибка при попытке вызвать метод в общем c виде - PullRequest
0 голосов
/ 23 января 2020

Привет всем, я пытаюсь отфильтровать таблицу, используя класс where, передав параметр методу, как показано ниже,

    private IQueryable<SpaceFunctionType> Get<TEntity>(Expression<Func<TEntity, bool>> predicate) where TEntity : class, ICategorySpaceFunction
    {
        return _dbContext.Set<TEntity>().Where(predicate)
                              .Select(c => new SpaceFunctionType
                              {
                                  Category = c.Category,
                                  SpaceFunction = c.SpaceFunction
                              });
    }

   public IQueryable<SpaceFunctionType> GetSpaceFunctionType(string environmentSource)
   {
        return Get<LibraryEnvironment>(x => x.EnvironmentSource.Name == environmentSource).AsQueryable();
   }

, и это детали интерфейса,

public interface ICategorySpaceFunction
{
    public string Category { get; set; }
    public string SpaceFunction { get; set; }
}

и это будет имя класса

public class SpaceFunctionType : ICategorySpaceFunction
{
    public string Category { get; set; }
    public string SpaceFunction { get; set; }
}

, но здесь появляется ошибка Get<LibraryEnvironment>, как показано ниже

Тип 'API.DesignHub.Entities.LibraryEnvironment' нельзя использовать в качестве параметра типа «TEntity» в типе c или методе «Query.Get (Expression>)». Не существует неявного преобразования ссылок из «API.DesignHub.Entities.LibraryEnvironment» в «API.DesignHub.Entities.ICategorySpaceFunction»

Я не уверен, что я делаю не так с вышеуказанным методом. любой, пожалуйста, предложите любую идею по этому вопросу, которая была бы очень благодарна мне,

Большое спасибо заранее

1 Ответ

1 голос
/ 23 января 2020

Ошибка в том, что происходит. Но используемый там язык немного обобщен c. Что это означает, что LibraryEnvironment не реализует ICategorySpaceFunction. TEntity - это тип ICategorySpaceFunction, и вы отправляете LibraryEnvironment при вызове, поэтому правило LibraryEnvironment должно быть похоже на TEntity, что является реализацией ICategorySpaceFunction. подробнее - https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...