public class clsA<T, T1>
where T : class
where T1 : class
{
public T GetEntity()
{
return (T) new clsB<T1>();
}
}
我收到错误无法将类型
clsB<T1>
转换为T
请帮忙
答案 0 :(得分:0)
那是因为T
可以是任何东西 - 例如string
,这会导致演员表失败。如果T
不能是变量类型,则不要将其包含在通用参数列表中。
如果您想允许T
为clsB<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
的实例。