![](/img/trans.png)
[英]How to fix this error? Invalid variance: The type parameter 'T' must be invariantly valid on
[英]Invalid variance: The type parameter must be invariantly valid but is covariant
這有什么問題?
// does not compile
interface IRepository<out T>
{
Task<T> Get(int id);
}
編譯器抱怨:
Invalid variance: The type parameter 'T' must be invariantly valid on ... 'T' is covariant.
但是,當我刪除任務時,代碼編譯:
// compiles
interface IRepository<out T>
{
T Get(int id);
}
為什么要使接口異步導致它不能編譯?
正如上面提到的Asad, Task<T>
不能協變,因為它是一個類 。 MSDN聲明:
只有接口類型和委托類型可以具有變體類型參數。
如果只有一個協變的ITask<T>
接口 。
經過一些谷歌搜索后,我在visualstudio.uservoice.com上找到了這個建議。 在評論中,Jeffrey Morse鏈接到他對ITask<T>
。
干得好傑夫!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.