试图在网上搜索但到目前为止没有找到任何内容,所以我的问题在这里:
我想通过不同成员的属性索引模型信息。 为此,我在基类中创建了一个函数,在调用时收集所有需要的信息。 这个方法被导出到不同的模型中,因此它们都可以被索引。
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 。
模型的类型为派生。
也许这可以解决一些问题。
我回来了:
IndexFacadeBase<Base>
我需要回来:
IndexFacadeBase<Derived>
提前感谢所有帮助。
答案 0 :(得分: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
方法。
答案 1 :(得分:0)
如果您的IndexFacadeBase<Base>
更改为IndexFacadeBase<T> where T:Base
,可能会有效。