具有 2 个不同泛型对象的函数



我正在尝试执行以下操作:

我有一个带有如下虚拟方法的类:

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)

相关内容

  • 没有找到相关文章

最新更新