J'ai une classe similaire à la suivante qui utilise une liste interne:C# coulée Implicite à la liste <T> retours d'erreur d'exécution
public class MyList<T> : IEnumerable<T>
{
private List<T> _lstInternal;
public MyList()
{
_lstInternal = new List<T>();
}
public static implicit operator List<T>(MyList<T> toCast)
{
return toCast._lstInternal;
}
}
Lorsque je tente de passer MyList<object>
à une fonction qui prend une List<object>
, je reçois un InvalidCastException. Pourquoi?
Quelle version de C# utilisez-vous? J'utilise 4.0 et j'ai été capable de faire ce que vous décrivez ici sans 'InvalidCastException'. – Donut
Y a-t-il une raison pour laquelle vous ne dérivez pas seulement de 'List'? –
CodesInChaos
@CodeInChaos, alors les utilisateurs de la classe seraient en mesure de muter la liste ou d'y accéder via un indexeur. Peut-être que l'auteur ne veut pas exposer cette fonctionnalité. –