2017-03-08 15 views
3

は、ウェブを検索しようとしましたが、ので、ここでこれまでのところ、私の質問は何も見つかりませんでした。私は別のメンバーの属性を経由して、インデックスモデル情報にしたいC#の - 派生文脈で導出基本メソッドを呼び出し

を。 これを行うには、呼び出されたときに必要な情報をすべて集める基本クラスに関数を作成しました。 このメソッドは、すべてのインデックスを作成できるように、異なるモデルに導きます。私は私が私がそこ

using (var indexFacade = IndexFacadeFactory.GetIndexFacade(configuration, this)) 
{ 
    indexFacade.Execute(this, operation); 
} 

私は現在抱えている問題を保存したい特定のモデルのためのインデックスサーバーへのアクセスも提供しますジェネリックメソッドを呼んでいる基底クラスで

Base() 
{ 
    public virtual void Index() {...} 
} 

ファクトリを呼び出すときに、ベースクラスの情報を取得するということです。

Derived : Base 
{ 
    [IndexingKey] 
    long Id { get; set; } 

    [IndexingField] 
    string SomeValue { get; set; } 
} 

var derived = new Derived(); 
derived.Index(); 

私indexFacadeは、私がここにpolimorphismを知ってる

IndexFacadeBase<Base> 

のタイプを保持し、これがなぜ起こるか:私はacomplishたい何

はこのようなものです。

私の質問は:それが呼び出されるコンテキストは、それを上書きせずに基本クラスからのものではないよう にはどうすれば

derived.Index(); 

呼び出すことができますか?

さらなる情報:

このようになりますと呼ばれる方法

public static IndexFacadeBase<T> GetIndexFacade<T>(IndexInfo.IndexConfiguration config, T model) 
     { 
      IndexFacadeBase<T> retVal; 
      ..... 
      return retVal; 
     } 

Tベースのタイプを有しています。

のタイプはです。です。

多分、問題のいくつかをクリアします。

私は戻って取得:

IndexFacadeBase<Base> 

私は戻っ必要があります:すべての助けを事前に

IndexFacadeBase<Derived> 

感謝を。

+1

「派生コンテキスト」とはどういう意味ですか? @マチューワトソン正確に –

+0

。どのような情報を渡したいですか?いつでもthis.GetType()を実行し、実際の派生型を取得できます。 – MistyK

+0

私はderived.Index()を呼び出すときにIndexFacadeBase を持っています 私はIndexFacadeBase が必要です。 タイプはジェネリックから来ており、ベースから呼び出されているので、コンテキストはIndexFacadeBase

答えて

2

私はあなたの質問を完全に理解していないかもしれませんが、単に派生クラスのメソッドをオーバーライドするつもりはありませんか?あなたがこれを行うとき

class Base 
{ 
    public virtual void Index() { } 
} 

class Derived : Base 
{ 
    public override void Index() { } // here is the override. 
    long Id { get; set; } 
    string SomeValue { get; set; } 
} 

は次に:

var derived = new Derived(); 
derived.Index(); 

を派生クラスのIndexメソッドが呼び出されます。

+0

になります。 問題は、ブロック全体を異なるモデルにコピー/ペーストする必要があるということだけです。彼らは道それが現在である –

0

あなたのIndexFacadeBase<Base>IndexFacadeBase<T> where T:Baseに変更されたと思われるかもしれません。

+0

にIndexFacadeBase それをコピーする必要なしに全力を尽くすだろう のpublic staticが GetIndexFacade (IndexInfo.IndexConfigurationの設定、Tモデル) { IndexFacadeBase RETVALをIndexFacadeBase「コール 起因するタイプです。 } ' これは、短く呼び出されるメソッドです。 TはBase型です モデルの型はDerived –

+0

です。申し訳ありませんが、回答の書式は醜いです。書式設定の権利を得るために定期的な回答を投稿します... –

関連する問題