メソッドをコンパイルできるのに、なぜプロパティでエラーが発生するのですか?
public interface IFoo {}
public interface IBar<out T> where T : IFoo {}
public interface IItem<out T> where T: IFoo
{
// IEnumerable<IBar<T>> GetList(); // works
IEnumerable<IBar<T>> ItemList { get; set; } // Error!
}
エラー:
無効な分散:タイプパラメータ「T」は、「UserQuery.IItem<T>.ItemList」で逆変的に有効である必要があります。「T」は共変です。