通用弹性搜索方法c#

时间:2019-06-28 09:06:31

标签: c# elasticsearch nest

我正在使用Nest。

https://www.nuget.org/packages/NEST/6.1.0

我有以下代码:

useSubject

问题:如何将字段作为ID传递?我知道我可以创建一个接口,但是我无法访问这些类。还有另一种映射方式吗?

1 个答案:

答案 0 :(得分:2)

T是通用的,如果要使用特定的属性,则需要使用非通用方法或添加为您提供Id属性的约束。例如,具有这样的界面:

public interface IHasId
{
    Guid id { get; }
}

这使您的模型看起来像这样:

public class foo : IHasId
{
    public Guid id { get; set; }
}

public class foo2 : IHasId
{
    public Guid id { get; set; }
}

现在您的方法将具有更新的约束:

public IReadOnlyCollection<T> GetDocumentAsync<T>(Guid id)
    where T : class, IHasId // <--- Add this
{
    // Snip
}