![](/img/trans.png)
[英]Is there a built-in generic interface with covariant type parameter returned by an indexer?
[英]Is it not possible to have a covariant interface contain a generic type who's type parameter is the covariant type?
我有一个协变接口和不相关的通用 class 。 我希望协变接口有一个属性,它是协变类型上通用 class 的实例,就像这样。
public interface IFoo<out T>
{
Bar<T> barobj { get; set; }
}
public class Bar<T>
{
}
不幸的是,我遇到了一个错误
错误 CS1961 无效方差:类型参数“T”必须在“IFoo<T>.barobj”上始终有效。 “T”是协变的。
这是否意味着不可能有一个具有使用协变类型作为参数的泛型类型的协变接口? 我在这里做错了吗?
一个接口只有在它只允许泛型类型的输出时才能是协变的。 您的界面不是协变的,因为您可以设置barobj
的值。 如果您将属性设为只读,则如果barobj
是协变的,则它可以是协变的。 这意味着您需要Bar
的协变接口:
public interface IFoo<out T>
{
IBar<T> barobj { get; }
}
public class Bar<T> : IBar<T>
{
}
public interface IBar<out T>
{
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.