gpt4 book ai didi

两个协变接口(interface)的 C# 协变问题

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:30 30 4
gpt4 key购买 nike

<分区>

我有两个都是协变的接口(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);
}

它的目的是允许可选的“跟踪器”看到发生的事情/修改执行者的结果。

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com