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