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/