我正在尝试执行以下操作:
我有一个带有如下虚拟方法的类:
public virtual Event<T> Execute<T>(T message)
这就是我想要的:
事件 T 可以不同于 T 消息。例如:有时我需要这样的函数:
public override Event<Bitmap> Execute(string message)
但是,当然,我收到以下错误"找不到合适的方法来覆盖"。
有什么办法可以做到这一点吗?使用此覆盖使用 2 种类型的通用对象?
注意:我可以更改虚拟方法,但其他类始终必须继承此方法。
谢谢!
你不需要重写它,覆盖用于更改从另一个类继承的方法。如果我理解正确,您想重载此方法,请省略覆盖并键入 virtual 代替。
public virtual Event<Bitmap> Execute(string message)
当您调用此函数时,编译器将根据您传递给该方法的值的数量/类型来选择最合适的方法。
听起来你应该将泛型类型移动到类或接口,然后实现/扩展Execute
方法:
public interface IExecutor<T>
{
Event<T> Execute();
}
public class BitmapExecutor : IExecutor<Bitmap>
{
Event<Bitmap> Execute() { ... }
}
拥有Execute<T>
方法没有意义,因为这意味着它对任何提供的类型T
有效,而不是特定的类型。
您可以像这样为您的方法声明另一个重载:
public virtual Event<K> Execute<T>(T message)