0
public class clsA<T, T1>
    where T : class
    where T1 : class
{
    public T GetEntity()
    {
        return (T) new clsB<T1>();            
    }
}

エラーが発生しますタイプをTに変換できませんclsB<T1>

助けてください

4

1 に答える 1

0

これは、たとえば、キャストが失敗する原因となる可能性があるためですT。変数型にできないstring場合は、それを総称引数リストに含めないでください。T

または任意のサブタイプを許可TclsB<T1>、そのクラスのインスタンスを作成する場合は、代わりに次のようにします。

public class clsA<T, T1>
    where T : clsB<T1>, new()
    where T1 : class
{
    public T GetEntity()
    {
        return new T();
    }
}

次に、タイプを指定します。

public class clsC : clsB<string> { }

GetEntity()タイプのオブジェクトを呼び出すclsA<clsC, string>と、のインスタンスが作成されて返されますclsC

于 2012-11-27T07:20:41.297 に答える