generics - MonoTouch 和支持变体通用接口(interface)

标签 generics xamarin.ios covariance contravariance

下面的示例在常规 Mono 2.10.9 中可以正常编译:

namespace covarianttest
{
    public interface ITest<out T> : IEnumerable<T>
    {
    }
}

但是,当我尝试针对 MonoTouch 6.0.8 编译它时,我收到此错误:

错误 CS1961:协变类型参数“T”必须在“covarianttest.ITest”上始终有效

那么我是否可以假设 MonoTouch 还不支持扩展协变/逆变通用接口(interface)?如果是这样,在 MonoTouch 中针对这种情况建议的解决方法是什么?

最佳答案

这实际上取决于编译器(和配置文件/运行时)而不是 Mono 版本。 IOW 有些功能可能适用于 Mono 2.10,但不适用于 MonoTouch 6.x。

当前版本的 MonoTouch 附带了 smcs 编译器和基于 2.1 的配置文件(主要是 Silverlight 和一些 .NET 4.0 附加功能)。

协方差等新功能需要完整的 4.0 编译器(例如 Mono 2.10 中的 dmcs 或 Mono 3.0 中的 mcs)和运行时。

MonoTouch 的 future 版本(可能在今年 Spring ,2013 年初推出 alpha/beta)将提供 4.0/4.5 运行时和编译器。

关于generics - MonoTouch 和支持变体通用接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14093332/

相关文章:

c# - 使用 'typeof'和 'is'时,c#如何共享引用类型的泛型实现?

c# - Xamarin.iOS 与第三方框架绑定(bind)

attributes - 单点触控 : Understand Foundation Attributes

适用于德国应用商店的 iPhone 应用(本地化)

scala - 为什么将方法包装在另一个方法中会停止 Scala 中的类型不匹配 - 在模式匹配中的类型参数中使用下划线?

javascript - 实现泛型类型的 Typescript 泛型类

java - 使用泛型方法替代重载?

c# - 是否可以在引入其他泛型类型的泛型类上使用构造函数?

python - 如何从Python中的协方差矩阵获取子协方差

python - numpy.polyfit 没有关键字 'cov'