在我的Elasticsearch nest客户端使用generic时出错,无法识别field.Title。

问题描述 投票:0回答:1
    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中出现的错误-------------------。

严重性代码描述 项目文件行抑制状态Error CS1061 'T'不包含'Title'的定义,也找不到接受类型为'T'的第一个参数的可访问扩展方法'Title'(你是否缺少一个使用指令或汇编引用?

c# elasticsearch generics nest
1个回答
0
投票

问题是,并非所有的 T 可以传递给该方法的可以有一个 Title 属性。

你可以在这个属性上引入一个通用的参数约束。T 表示它必须有一个 Title 属性,或许可以使用一个定义了 Title 属性。然后,您还需要在任何一个 T 您希望传递给本方法的

© www.soinside.com 2019 - 2024. All rights reserved.