【发布时间】:2012-06-28 14:34:18
【问题描述】:
我有一个这样的集合类:
public class SomeDataCollection : List<ISomeData>
{
// some method ...
}
但我不能这样做:
SomeDataCollection someDatas = new List<ISomeData>();
无法隐式将类型
List<ISomeData>转换为SomeDataCollection。存在显式转换(您是否缺少演员表?)
所以我尝试在 SomeDataCollection 集合类中创建一个隐式转换器:
public static implicit operator SomeDataCollection(List<ISomeData> l)
{
var someDatas = new SomeDataCollection();
someDatas.AddRange(l);
return someDatas;
}
但它说我不能创建这样的转换器:
SomeDataCollection.implicit operator SomeDataCollection(List<ISomeData>): 不允许用户定义的与基类之间的转换
当我这样投射时:
SomeDataCollection someDatas = (SomeDataCollection)new List<ISomeData>();
它抛出一个错误说:
System.InvalidCastException: 无法将
List<ISomeData>类型的对象转换为SomeDataCollection类型。
我该怎么做:
SomeDataCollection someDatas = new List<ISomeData>();
没有错误?请帮忙。提前致谢。
【问题讨论】:
标签: c# .net-4.0 implicit-conversion