我有两个都是协变的接口(interface),它们都像这样相互传递:
public interface Perfomer<in T>
{
void Perform(T t, Tracer<T> tracer);
}
public interface Tracer<in T>
{
void Notify();
}
然而,即使两个接口(interface)都标记为协变,并且 T 仅用作输入,我仍然收到错误:
"Invalid variance: The type parameter 'T' must be covariantly valid on
'Perfomer<T>.Do(T, Tracer<T>)'. 'T' is contravariant. [_Console].
知道为什么使用相同类型的协变接口(interface)参数会使 T 逆变吗?
编辑 (抱歉,我是 StackOverflow 的新手,根据我意识到我的问题应该更准确的答案,我只是试图消除尽可能多的噪音以消除单个错误)。
代码实际上有两个接口(interface),接口(interface)大致相似:
public interface Performer<in T>
{
bool Perform(T t, Tracer<T> tracer = null);
}
public interface Tracer<in T>
{
void Notify(Performer<T> performer, T t, ref bool success);
}
它的目的是允许可选的“跟踪器”看到发生的事情/修改执行者的结果。
我是一名优秀的程序员,十分优秀!