tengo una clase de colección como esta:C# conversión implícita de clase base
public class SomeDataCollection : List<ISomeData>
{
// some method ...
}
pero no puede hacer esto:
SomeDataCollection someDatas = new List<ISomeData>();
No se puede implícitamente convertir el tipo
List<ISomeData>
-SomeDataCollection
. existe una conversión explícita (¿falta un yeso?)
así que intenta crear un conversor implícita dentro de la clase SomeDataCollection
colección:
public static implicit operator SomeDataCollection(List<ISomeData> l)
{
var someDatas = new SomeDataCollection();
someDatas.AddRange(l);
return someDatas;
}
pero dijo que no puedo crear dicho convertidor:
SomeDataCollection.implicit operator SomeDataCollection(List<ISomeData>)
: conversiones definidas por el usuario hacia o desde una clase base no se les permite
Y cuando yo echo de esta manera:
SomeDataCollection someDatas = (SomeDataCollection)new List<ISomeData>();
que arroja un error que dice:
System.InvalidCastException: No se puede convertir objeto de tipo
List<ISomeData>
para escribirSomeDataCollection
.
¿Cómo puedo hacer esto:
SomeDataCollection someDatas = new List<ISomeData>();
sin conseguir un error? Por favor ayuda. Gracias por adelantado.
posible duplicar: http://stackoverflow.com/questions/3401084/user-defined-conversion-operator-from-base-class – albertjan