[英]Cast exception in generic type
public class clsA<T, T1>
where T : class
where T1 : class
{
public T GetEntity()
{
return (T) new clsB<T1>();
}
}
我收到错误消息无法将类型
clsB<T1>
转换为T
请帮忙
那是因为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> { }
在类型为clsA<clsC, string>
的对象上调用GetEntity()
将构造并返回clsC
的实例。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.