ho una classe di raccolta come questa:C# implicita conversione da classe base
public class SomeDataCollection : List<ISomeData>
{
// some method ...
}
ma non posso fare questo:
SomeDataCollection someDatas = new List<ISomeData>();
Impossibile implicitamente convertito tipo
List<ISomeData>
-SomeDataCollection
. Una conversione esplicita esiste (Vi manca un cast?)
così cerco di creare un coverter implicita all'interno della classe SomeDataCollection
collezione:
public static implicit operator SomeDataCollection(List<ISomeData> l)
{
var someDatas = new SomeDataCollection();
someDatas.AddRange(l);
return someDatas;
}
ma ha detto che non posso creare tale convertitore:
SomeDataCollection.implicit operator SomeDataCollection(List<ISomeData>)
: conversioni definite dall'utente o da una classe base non sono ammessi
E quando ho gettato in questo modo:
SomeDataCollection someDatas = (SomeDataCollection)new List<ISomeData>();
getta un errore che ha detto:
System.InvalidCastException: Impossibile eseguire il cast oggetto di tipo
List<ISomeData>
digitareSomeDataCollection
.
Come posso fare questo:
SomeDataCollection someDatas = new List<ISomeData>();
senza ottenere un errore? Per favore aiuto. Grazie in anticipo.
possibile dupplicate: http://stackoverflow.com/questions/3401084/user-defined-conversion-operator-from-base-class – albertjan