a previous questionの質問に続き、これは共分散の問題として識別されています。List <T>が共変なインターフェイスで無効なのはなぜですか?MyInterface
class Program
{
static void Main(string[] args)
{
IFactory<IProduct> factory = new Factory();
}
}
class Factory : IFactory<Product>
{
}
class Product : IProduct
{
}
interface IFactory<out T> where T : IProduct
{
List<T> MakeStuff();
}
interface IProduct
{
}
は私が取得:次のように私はIFactory
を変更した場合、さらにこの1歩を踏み出し
無効な差異:型パラメータTがSandbox.IFactory.MakeStuff上の不変有効である必要があります()。 Tは共変数である。
なぜこれは不変ではありませんか?これはどのように解決できますか?
この回答が書かれた後、 'List'が新しいインターフェース 'IReadOnlyList 'を実装した新しいバージョンの.NET Frameworkがリリースされたことに注意してください。示されているように、インタフェースは 'IEnumerable 'のように共変です。 –