Bonjour, Je viens de commencer à programmer en F # et je suis bloqué sur un problème de type. J'ai cette fonction:Le paramètre a été utilisé de manière à toujours être DerrivedType
member private this.UpdateStats<'T when 'T :> StatisticsBase>(passed: bool, stats: 'T) =
//more stuff..
stats
J'appelle comme ça:
this.UpdateStats<GroupStats>(true, GroupStats(Id = Guid.NewGuid()))
Le compilateur dit:
Le paramètre a été utilisé d'une manière qui limite à toujours être GroupStats. GroupStats hérite de StatisticsBase.
Que dois-je faire pour rendre la fonction utilisable pour toutes les entités qui héritent de StatisticsBase?
types:
[<AllowNullLiteral>]
type StatisticsBase() =
member val Id = String.Empty with get,set
[<AllowNullLiteral>]
type GroupStats() =
inherit Stats()
StatisticsBase hérite effectivement d'un type C# et est utilisé dans un dépôt, mais je peux reproduire l'erreur avec le code ci-dessus
Vous devrez montrer plus de code que cela. Je n'obtiens aucun avertissement avec l'implémentation minimale que vous avez décrite. Je soupçonne que le code de 'UpdateStats' n'est pas aussi simple que vous l'avez laissé. –