2014-07-15 55 views
1

我想在兩個類中使用C#中的通用接口共享一個ElasticSearch類型,並且只有一個與ES類型接口的服務。我遇到的問題是,因爲ElasticTypeAttribute只能存在於類類型上,所以以下服務將插入錯誤的es類型。ElasticSearch和Nest ElasticType的接口

有沒有辦法實現以下場景?

public interface I 
{ 
    //... 
} 

[ElasticType("x")] 
public class A : I 
{ 
    //... 
} 

[ElasticType("x")] 
public class B : A, I 
{ 
    //More 
} 

public class IService 
{ 
    public IIndexResponse Save(I item) 
    { 
     return ElasticClient.Index(item) 
    } 
    //... 
} 

回答

0

您可以通過連接設置註冊接口的索引和ES型:

var settings = new ConnectionSettings(...) 
    .MapDefaultTypeIndices(m => m.Add(typeof(IMyInterface), "myindex")) 
    .MapDefaultTypeNames(m => m.Add(typeof(IMyInterface), "mytype"));