2014-05-17 5 views
2

J'ai une classe abstraite appelée "RecordA" avec une certaine logique de découpage à partir de laquelle je veux sous-classer quelques classes. Je veux "Record" pour définir une méthode Abstract Slice qui doit être implémentée pour renvoyer son propre type, e. g. tapez "RecordB" lorsqu'il est découpé renvoie le type RecordB.Comment spécifier un type de retour automatique

Est-ce possible dans Fsharp? Si non, pourquoi pas?

+0

Voir aussi http://stackoverflow.com/questions/3045671/ interface-for-method-that-returns-its-own-type (toutes les réponses ici s'appliquent) – Jwosty

Répondre

4

La seule façon pour une interface pour une méthode qui retourne un type différent en fonction de la classe concrète est de rendre paramétrique:

type Record<'Concrete> = 
    abstract member Slice : unit -> 'Concrete 

type RecordB() = 
    interface Record<RecordB> with 
     member this.Slice() = new RecordB() 
Questions connexes