我很确定有一个围绕协方差的简单答案,但我很难看到它!
我有这样的课:
internal sealed class GenericCallbackClass<T> : SomeBaseClass
where T : ICallbackMessageBase
{
public GenericCallbackClass(string activeId, T message)
: base(activeId)
{
Message = message;
}
public T Message { get; private set; }
}
然后,我创建了一个实现 ICallbackMessageBase 的类的实例,名为 Foo 并实例化一个新的 GenericCallbackClass,将其作为 T 的参数传入var myCallback = new GenericCallback<Foo>("SomeID", new Foo())
我现在想将它转换为更通用的 GenericCallbackClass 实例,因为我将有许多带有 Foo、Bar 等的实例,但都实现了 ICallbackMessageBase。
所以我想做类似的事情var callback = myCallback as GenericCallbackClass<ICallbackMessageBase>
看来我不能做这个演员......有什么想法我应该如何解决这个问题?