2017-11-24 14 views
1

ジェネリック型のインデックスを生成するにはどうすればよいですか?これは私が定義したジェネリックインデックスにドキュメントを挿入するコードです。Tres empセクションに「Tresは型であり、コンテキスト "ネストを使用して弾性検索でジェネリックインデックスを定義することはできますか?

public void InsertDocument<Tres>(ElasticClient es, Tres emp,IndexName name) where Tres: new() 
    { 
     es.Index<Tres>(**Tres emp**, x => x.Index(name).Type("logs")); 
    } 

答えて

0

一般的な" Tres "タイプの参照を定義する必要があります。ジェネリック型の機能を期待どおりに実行するには、他のelasticsearchインデックスクラスから派生した基本クラスを作成する必要があります。したがって、カスタムelasticsearchインデックスクラスをそのように渡すことができます。

まず、Elasticsearchインデックスクラスの基本クラスを作成します。

public class EsIndicesBaseClass 
{ 

} 

また、私はElasticsearchインデックスモデルのサンプルを提供しました。

public class EsSampleIndexModel : EsIndicesBaseClass 
{ 
    public string SampleProperty{get;set;} 
} 

そして

public void InsertDocument<Tres>(ElasticClient es, Tres emp,IndexName name) where Tres: EsIndicesBaseClass 
    { 
     es.Index<Tres>(emp, x => x.Index(name).Type("logs")); 
    } 

使い方にあなたの一般的な方法を変更します。

var esSampleIndexData = new EsSampleIndexModel(); 

InsertDocument<EsSampleIndexModel>(es, esSampleIndexData , name); 
+0

私が基本クラスを追加したときに働いたのですが、なぜ基本クラスが必要ですか? – Sres

+0

答えにいくつかの説明があります。 – lucky

関連する問題