我有一個更復雜的問題,但我已經熬下來到下面這個簡單的例子:接口繼承和通用接口強制顯式強制轉換?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Sandbox
{
class Program
{
static void Main(string[] args)
{
IFactory<IProduct> factory = new Factory();
}
}
class Factory : IFactory<Product>
{
}
class Product : IProduct
{
}
interface IFactory<T> where T : IProduct
{
}
interface IProduct
{
}
}
一切都很好,花花公子......除了我得到這個錯誤。
錯誤1無法隱式轉換類型Sandbox.Factory
到Sandbox.IFactory<Sandbox.IProduct>
。存在明確的轉換(您是否缺少演員?)c:\ ~~ \ Program.cs 12 42沙盒
任何人都願意提供洞察,爲什麼會出現這種情況?我確信Jon Skeet或Eric Lippert可以在心裏解釋爲什麼會出現這種情況,但必須有人不僅能夠理解爲什麼這不能被推斷,而是能夠解釋如何最好地解決這種情況。
跟進問題here
事實證明,Eric Lippert和Jon Skeet在很多次的心跳中都解釋了這一點。如果你搜索'interface + covariance',你可能會絆倒並找到一個這樣的解釋。 –
編輯,隨訪。 – Firoso
後續問題應作爲單獨的問題提出(儘管將它們鏈接在一起) –