我有以下课程。
interface ICommand {. . .}
class ShutdownCommand : ICommand { . . .}
class Message<T> where T : ICommand { . . .}
class Communicator
{
void Send(Message<ICommand> a_msg) { . . .}
}
当我调用以下代码时,我收到一条错误消息,指出无法从类型Message<ShutdownCommand>
转换为Message<ICommand>
。这对我来说并不直观,因为ShutdownCommand
继承自ICommand
。
var message = new Message<ShutdownCommand>();
m_communicator.SendCommand(message);
我知道我可以通过为Message类添加非泛型接口来解决这个问题,并在Send()方法中将其用作参数类型。
无论它可以按照我上面描述的方式修复......我很好奇为什么没有可能的转换,如果从上面的代码出现转换应该是可能的。