簡體   English   中英

C# - 在派生的上下文中調用派生的基本方法

[英]C# - Call a derived base method in the derived context

試圖搜索網絡但到目前為止沒有找到任何內容所以我的問題:

我想通過不同成員的屬性索引模型信息。 為此,我在基類中創建了一個函數,在調用時收集所有需要的信息。 該方法被導出到不同的模型中,以便它們都可以被索引。

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

在基類中,我正在調用一個通用方法,它允許我訪問索引服務器以獲取我想要保存在那里的特定模型

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

我目前遇到的問題是,在調用工廠時,它會檢索基類的信息。

我想要實現的是這樣的:

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

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

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

我的indexFacade保持類型

IndexFacadeBase<Base>

我知道這里的polimorphism和為什么會發生這種情況。

我的問題是:我怎么稱呼

derived.Index();

所以調用它的上下文不是來自基類而沒有覆蓋它?

更多的信息:

調用的方法如下所示:

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

T具有Base的類型。

模型具有Derived類型。

也許這可以解決一些問題。

我回來了:

  IndexFacadeBase<Base>

我需要回來:

   IndexFacadeBase<Derived>

在此先感謝所有的幫助。

我可能沒有完全理解你的問題,但你不是只想在派生類中重寫方法嗎?

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方法被調用。

如果您的IndexFacadeBase<Base>更改為IndexFacadeBase<T> where T:Base它可能會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM