c# - 在我的 Elasticsearch 嵌套客户端中使用泛型时出错?它无法识别字段。标题

标签 c# elasticsearch generics nest

    internal List<T> SearchByText<T>(string index, string searchAgainst, string inquiry) where T : class
    {
        var searchResponse = client.Search<T>(s => s
                    .Index(index)
                    .From(0)
                    .Size(10)
                    .Query(q => q
                         .Match(m => m
                             .Field(f => f.Title)
                            .Query(inquiry)
                         )
                     )
                );

        var products = searchResponse.Documents;

        return (List<T>)products;
    }

我有 T 作为我的类型,因此我可以接收和搜索所有索引,但我无法访问 f.Title。因为它是未知的,我明白了,有什么建议可以访问 f.Title 吗?

Visual Studio 中发生错误 -

严重性代码 描述 项目文件行抑制状态
错误 CS1061 'T' 不包含 'Title' 的定义,并且找不到接受第一个参数类型为 'T' 的可访问扩展方法 'Title'(您是否缺少 using 指令或程序集引用?)

最佳答案

问题是并非所有T可以传递给方法的可能有 Title属性(property)。

您可以在 T 上引入通用参数约束。表示它必须有 Title属性,可能使用定义 Title 的接口(interface)属性(property)。您还需要在任何 T 上实现此接口(interface)。你希望传递给这个方法

关于c# - 在我的 Elasticsearch 嵌套客户端中使用泛型时出错?它无法识别字段。标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61926881/

相关文章:

c# - Activator.CreateInstance 失败

c# - IQueryable 到 string[] 数组?

ElasticSearch 标语 : How to Change

amazon-web-services - 是否可以在 AWS 中使用 lambda 任务进行弹性转储?

java - 无法在 Java 中形成带有两个问号的类型的表达式

java - 检索集合的类型

C#:线程安全的 richtextbox 事件记录方法?

c# - ASP.NET MVC 3 中具有 Javascript 操作的 HTML 帮助器

amazon-web-services - AWS 无服务器 Lambda 函数 : No module by name elasticsearch error

c# - 当我向基类提供类型参数时,为什么我的子类仍然是通用的?