【问题标题】:getting an error on trying to call method in generic way尝试以通用方式调用方法时出错
【发布时间】:2020-01-22 22:11:56
【问题描述】:

大家好,我正在尝试使用 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&lt;LibraryEnvironment&gt; 出现错误,如下所示

不能使用“API.DesignHub.Entities.LibraryEnvironment”类型 作为泛型类型或方法中的类型参数“TEntity” 'Query.Get(表达式>)'。没有 隐式引用转换 'API.DesignHub.Entities.LibraryEnvironment' 到 'API.DesignHub.Entities.ICategorySpaceFunction'

我不确定上述方法在哪里做错了,任何人都可以就此提出任何想法,非常感谢我,

在此先感谢

【问题讨论】:

  • 需要minimal reproducible example,但看起来LibraryEnvironment 不是ICategorySpaceFunction 错误所说...
  • 是的,两者都不同,我刚刚更新了我的问题
  • 错误就是它正在发生的事情。但是那里使用的语言有点通用。它的意思是LibraryEnvironment 没有实现ICategorySpaceFunctionTEntityICategorySpaceFunction 的一个类型,而你在调用时发送LibraryEnvironment,所以LibraryEnvironment 应该类似于TEntity,这是ICategorySpaceFunction 的一个实现。更多细节 - docs.microsoft.com/en-us/dotnet/csharp/programming-guide/…

标签: c# .net list entity-framework generics


【解决方案1】:

错误就是它正在发生的事情。但是那里使用的语言有点通用。它的意思是LibraryEnvironment 没有实现ICategorySpaceFunctionTEntityICategorySpaceFunction 的一个类型,而你在调用的时候发送的是LibraryEnvironment,所以规则LibraryEnvironment 应该类似于TEntity,这是ICategorySpaceFunction 的一个实现。更多详情 - https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/generics/constraints-on-type-parameters

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 2014-06-10
    相关资源
    最近更新 更多