具有2个不同通用对象的功能

时间:2014-04-06 15:58:39

标签: c# .net-4.5

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

我有一个类有这样的虚拟方法:

public virtual Event<T> Execute<T>(T message)

这就是我想要的:

事件T可以是T消息的不同。例如:有时我需要这样的函数:

public override Event<Bitmap> Execute(string message)

但当然,我收到以下错误“找不到合适的方法来覆盖”。

有没有办法做到这一点?使用此覆盖使用2种类型的通用对象?

注意:我可以更改虚方法,但其他类总是必须继承这个。

谢谢!

3 个答案:

答案 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)