0

ここでこのエラーが発生する理由について、少し混乱しています。私はとして宣言しTたのでout、そのタイプを返すことは大丈夫ではないでしょうか?

public interface IWebFeed<out T> where T : BaseItem
{
    List<T> getItems();

    void loadFeed();
}

代わりに私は得る:

共変型パラメーターT' must be invariantly valid on Shared.Service.Feed.IWebFeed.getItems() '

編集:それで、mbeckishが指摘したように、彼のリンクで、を変更するとこれは解決List<T>するIEnumberable<T>はずですが、の宣言に従うとIEnumerable、次のようになります:

using System;
namespace System.Collections.Generic
{
    public interface IEnumerable<T> : IEnumerable
    {
        //
        // Methods
        //

        IEnumerator<T> GetEnumerator();
    }
}

これはXamarinまたはそのPCLのバグですか?Tそうではないという事実out

4

2 に答える 2

1

インターフェイスの差異は、MonoTouch ( Xamarin ) ではまだサポートされておらず、Mono が比較的最近インターフェイスの差異を追加したため、将来のバージョンでサポートされる予定です。

于 2013-02-08T04:19:27.130 に答える
-1

GetItems メソッドの定義を次のように変更する必要があります...

List<BaseItem> GetItems();

これはT、形状に適合しなければならないという制限を宣言しているためです。BaseItemしたがって、差異が保持されるためには、リスト内のアイテムのタイプを制限する必要があります。これにより、BaseItemクラスの複数のリストを作成し、明示的な変換を必要とせずにそれらを交換できます。

于 2013-02-08T03:42:51.663 に答える