[英]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.