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

我收到错误无法将类型转换clsB<T1>为 T

请帮忙

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 回答