我是.Net的新手,我在这里显然做错了。在我的基础抽象类中,我有以下委托:
public delegate bool DEnqueue(ref IPCPriorityMessage item, byte priority);
...以及以下方法声明:
public abstract DEnqueue Enqueue();
在我的实例课中,我有以下内容:
public override DEnqueue Enqueue;
我将Enqueue指向适用的本地方法。如果我不使用继承或不使用委托,我只能让它工作。
我的确切目标是:
我该怎么做?我尝试使用接口,但基本上存在同样的问题。
注意:我只在运行时知道要使用哪个私有enqueue(),因此我使用了委托。
答案 0 :(得分:2)
看起来你正在寻找Template Method Pattern。无需使用代表。
答案 1 :(得分:1)
首先,基类中的方法声明可能没有说出你的想法。它说的是Enqueue
方法返回类型为DEnqueue
的委托,而不是该方法与委托具有相同的类型。
您可以做的是在基类中使用DEnqueue
类型的属性:
public abstract DEnqueue Enqueue { get; }
您可以(或实际上,必须)然后使用委托实现它:
private DEnqueue m_enqueue;
public override DEnqueue Enqueue
{
get { return m_enqueue; }
}
您可以使用与调用方法相同的方式调用属性中的委托。